hive基本操作

  • Post author:
  • Post category:其他


1. 创建表格

简单案例




CREATE TABLE page_view (

page_url string,

ip string

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘\t’

STORED AS TEXTFILE;


行之间默认以换行符隔开 不需要指定

关系型数据库数据以二进制文件形式存储 而hive中的数据以文本文件形式存储

复杂案例




CREATE TABLE people(

id string,

name string,

hobby ARRAY<string>,

address MAP<string, string>

)

PARTITIONED BY(dt string)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘\t’

COLLECTION ITEMS  TERMINATED BY ‘,’

MAP KEYS  TERMINATED BY ‘:’

STORED AS TEXTFILE;


PARTITIONED BY(dt string)指定以日期进行分区(dt===date)

FIELDS TERMINATED BY ‘\t’ 指定字段之间以制表符进行分隔

COLLECTION ITEMS  TERMINATED BY ‘,’  指定元素之间以逗号进行分隔

MAP KEYS  TERMINATED BY ‘:’   指定集合的键值对之间以冒号进行分隔

STORED AS TEXTFILE 指定数据以文本文件形式进行存储

注意:

(1)元素之间不能以分号分隔 因为hive默认分号为语句的结束符

(2)PARTITIONED BY(dt string)不能放在STORED AS TEXTFILE 之后

插入数据的格式如下:


插入数据的命令:

load data local inpath ‘/test/test.txt’ into table people PARTITION(dt=’2018-4-13′);

local表示将本地数据插入到hive中 如果不写就表示将hdfs上的数据插入到hive中


创建表格时 如果加上external则表示外表 默认是内表

2. 查看表结构


3. 查看数据



通过浏览器查看hdfs上存放数据的具体位置:



此处数据的存储路径由hive配置文件(hive-site.xml)指定


在表的目录下会创建分去目录 分区目录下存放具体的数据

4. 从一张表查询数据 插入到另外一张表

先创建一张新表

CREATE TABLE people_new(

id string,

name string,

hobby ARRAY<string>

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘\t’

COLLECTION ITEMS  TERMINATED BY ‘,’

STORED AS TEXTFILE;

选择people表中的id name和hobby字段添加到people_new表中

INSERT OVERWRITE TABLE people_new SELECT id,name,hobby FROM people;



5. 清空某张表中的数据(可以直接用insert实现 OVERWRITE会用新的数据覆盖原表中的数据 也可以使用truncate)

INSERT OVERWRITE TABLE people_new SELECT* FROM people WHERE 1=2;

6. 删除表所在的分区(内表与外表的对比和区别)

ALTER TABLE people DROP IF EXISTS PARTITION(dt=’2018-4-13′);



可以发现表所在的分区会消失 同时表中的数据也会丢失


创建一张外表

CREATE

EXTERNAL

TABLE people(

id string,

name string,

hobby ARRAY<string>,

address MAP<string, string>

)

PARTITIONED BY(dt string)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘\t’

COLLECTION ITEMS  TERMINATED BY ‘,’

MAP KEYS  TERMINATED BY ‘:’

STORED AS TEXTFILE;

插入数据:load data local inpath ‘/test/test.txt’ into table people PARTITION(dt=’2018-4-13′);

删除该表所在分区:ALTER TABLE people DROP IF EXISTS PARTITION(dt=’2018-4-13′);

发现hfds中的分区和数据依然存在 但是hive中已经查询不到数据了


内表与外表的区别就在于:内表在删除该表时 数据会同步删除 而外表则不会 外表在删除该表时 数据仍然保存在hdfs中

在hive中创建数据库和表之后 表的元数据会保存在关系型数据库中(可以配置mysql、oracle等)


此处的hive数据库是自动创建的 hive数据库中总共有35张表


7. hiveserver2的使用

第一步:启动hive metastore server:hive –service metastore

启动后可能会卡住 查看进程 如果出现RunJar 表明hive metastore启动成功


第二步:启动hiverserver2(可以直接使用命令hiveserver2 也可以使用命令hive –service hiveserver2)


可能会卡住 查看日志 只要没报错就没有问题(指定hive日志需要单独配置)注意:这个界面在操作中不要关闭 否则无法连接


将hive-log4j.properties.template文件拷贝一份 并改名为hive-log4j.properties

打开hive-log4j.properties修改配置如下:


第三步:使用beeline命令进入hive操作界面


第四步:连接到hive:!connect jdbc:hive2://localhost:10000 root




版权声明:本文为hll19950830原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。