1. 创建表格
简单案例
page_url string,
ip string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
行之间默认以换行符隔开 不需要指定
关系型数据库数据以二进制文件形式存储 而hive中的数据以文本文件形式存储
复杂案例
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