Hive数仓:导入集合类型数据
6.1进入实验,启动Hadoop集群
6.1.1在master启动Hadoop集群
[zkpk@master ~]$ start-all.sh
6.1.2在master上运行jps,确认NameNode, SecondaryNameNode, ResourceManager进程启动
6.1.3在slave01上运行jps,确认DataNode, NodeManager进程启动
6.1.4在slave02上运行jps,确认DataNode, NodeManager进程启动
6.2进入hive客户端
[zkpk@master ~]$ hive
6.3创建包含三种字段类型的表(字段类型分别为struct、map、array)
6.3.1查看hive中的表
hive> show tables;
6.3.2创建一个员工表(名称:employees)
6.3.2.1第一个字段类型为字符串,字段名称:name(描述:员工名字)
6.3.2.2第二个字段类型为浮点型,字段名称:salary(描述:员工薪水)
6.3.2.3第三个字段类型为数组,其中每个数组元素都是字符串,字段名称:subordinates(描述:下属员工)
6.3.2.4第四个字段类型是一个由键一值对构成的map,其中键是字符串、值是浮点型,字段名称:deductions(描述:其中键表示税种,值表示相应税种的金额,这些税将会在发薪水的时候从员工工资中扣除掉)
6.3.2.5第五个字段类型是struct,字段名称:address(描述:存储每名雇员的家庭住址)(address的详细结构,其中前三个元素类型都是字符串,名称分别为street、city、state,分别表示街道、城市、省份,最后一个元素类型是整型,名称是zip,表示邮编)
6.3.2.6语法:
CREATE TABLE “表名”(
字段名1 类型,
字段名2 类型,
字段名3 类型……
);
说明:更加详细的hive建表语句可查看官网文档,文档连接(此链接随着时间的推移,可能会失效,请自行查找最新链接)
CREATE TABLE employees(
name STRING,
salary FLOAT,
subordinates ARRAY<STRING>,
deductions MAP<STRING,FLOAT>,
address STRUCT<street:STRING,city:STRING,state:STRING,zip:INT>);
6.4创建包含三种字段类型的表(字段类型分别为struct、map、array)并带有默认分隔符
6.4.1查看hive中的表
hive> show tables;
6.4.2删除上面创建的员工表(名称:employees)
hive> drop table employees;
6.4.3创建带有自定义分隔符的员工表(名称:employees)
6.4.3.1第一个字段类型为字符串,字段名称:name(描述:员工名字)
6.4.3.2第二个字段类型为浮点型,字段名称:salary(描述:员工薪水)
6.4.3.3第三个字段类型为数组,其中每个数组元素都是字符串,字段名称:subordinates(描述:下属员工)
6.4.3.4第四个字段类型是一个由键值对构成的map,其中键是字符串、值是浮点型,字段名称:deductions(描述:其中键表示税种,值表示相应税种的金额,这些税将会在发薪水的时候从员工工资中扣除掉)
6.4.3.5第五个字段类型是struct,字段名称:address(描述:存储每名雇员的家庭住址)(address的详细结构,其中前三个元素类型都是字符串,名称分别为street、city、state,分别表示街道、城市、省份,最后一个元素类型是整型,名称是zip,表示邮编)
6.4.3.6设置每行的格式如以下步骤:
6.4.3.7设置表的字段分隔符为八进制编码\001,vim查看表数据文件时,此分割符显示为‘\^A’
6.4.3.8设置数组集合类型中元素的分隔符为八进制编码\002,vim查看表数据文件时显示为‘\^B’
6.4.3.9设置map集合数据类型中键和值之间的分隔符为八进制编码\003,vim查看表数据文件时显示为‘\^C’
6.4.3.10设置行之间的分隔符‘\n’
6.4.3.11设置表存储格式为文本类型
6.4.3.12语法:
CREATE TABLE “表名”(
字段名1 字段1类型,字段名2 字段2类型,字段名3 字段3类型……
)
行格式
表字段分隔符‘\^A’
数组集合中的元素分隔符‘\^B’
map集合数据类型中键和值之间的分隔符‘\^C’
行之间的分隔符
存储格式为文本类型;
create table employees(
name string,
salary float,
subordinates array<string>,
deductions map<string,float>,
address struct<street:string, city:string, state:string, zip:int>)
row format delimited
fields terminated by '\001'
collection items terminated by '\002'
map keys terminated by '\003'
lines terminated by '\n'
stored as textfile;
6.5将本地数据demo.txt导到hive employees表中
6.5.1直接将数据目录/home/zkpk/experiment/中的demo.txt数据导入到employees表中
6.5.2语法:load data local inpath ‘本地文件位置’ overwrite into table 表名;
hive> load data local inpath '/home/zkpk/experiment/demo.txt' overwrite into table employees;
6.6查看employees表数据
6.6.1语法:select * from 表名;
hive> select * from employees;
6.7将hive employees表中数据下载到本地
6.7.1语法:
insert overwrite local directory ‘/home/zkpk/目录名’ select * from 表名;
注意:使用此命令导出的为目录
hive> insert overwrite local directory '/home/zkpk/employees' select * from employees;
6.8查看下载到本地的数据
6.8.1使用exit命令退出hive交互终端,进入下载到本地数据的目录,使用vim查看目录中的数据文件
hive>exit;
[zkpk@master ~]$ cd employees/
[zkpk@master employees]$ vim 000000_0