Hive数仓:导入集合类型数据

6.1进入实验,启动Hadoop集群

6.1.1在master启动Hadoop集群

  1. [zkpk@master ~]$ start-all.sh

图 3

6.1.2在master上运行jps,确认NameNode, SecondaryNameNode, ResourceManager进程启动

图 4

6.1.3在slave01上运行jps,确认DataNode, NodeManager进程启动

图 5

6.1.4在slave02上运行jps,确认DataNode, NodeManager进程启动

图 6

6.2进入hive客户端

  1. [zkpk@master ~]$ hive

图 7

6.3创建包含三种字段类型的表(字段类型分别为struct、map、array)

6.3.1查看hive中的表

  1. hive> show tables;

图 8

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建表语句可查看官网文档,文档连接(此链接随着时间的推移,可能会失效,请自行查找最新链接)

  1. CREATE TABLE employees(
  2. name STRING,
  3. salary FLOAT,
  4. subordinates ARRAY<STRING>,
  5. deductions MAP<STRING,FLOAT>,
  6. address STRUCT<street:STRING,city:STRING,state:STRING,zip:INT>);

图 9

6.4创建包含三种字段类型的表(字段类型分别为struct、map、array)并带有默认分隔符

6.4.1查看hive中的表

  1. hive> show tables;

图 10

6.4.2删除上面创建的员工表(名称:employees)

  1. hive> drop table employees;

图 11

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’

​ 行之间的分隔符

​ 存储格式为文本类型;

  1. create table employees(
  2. name string,
  3. salary float,
  4. subordinates array<string>,
  5. deductions map<string,float>,
  6. address struct<street:string, city:string, state:string, zip:int>)
  7. row format delimited
  8. fields terminated by '\001'
  9. collection items terminated by '\002'
  10. map keys terminated by '\003'
  11. lines terminated by '\n'
  12. stored as textfile;

图 12

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 表名;

  1. hive> load data local inpath '/home/zkpk/experiment/demo.txt' overwrite into table employees;

图 13

6.6查看employees表数据

6.6.1语法:select * from 表名;

  1. hive> select * from employees;

图 14

6.7将hive employees表中数据下载到本地

6.7.1语法:

​ insert overwrite local directory ‘/home/zkpk/目录名’ select * from 表名;

注意:使用此命令导出的为目录

  1. hive> insert overwrite local directory '/home/zkpk/employees' select * from employees;

图 15

6.8查看下载到本地的数据

6.8.1使用exit命令退出hive交互终端,进入下载到本地数据的目录,使用vim查看目录中的数据文件

  1. hive>exit;
  2. [zkpk@master ~]$ cd employees/
  3. [zkpk@master employees]$ vim 000000_0

图 16
posted @ 2020-06-15 16:34  午魅  阅读(398)  评论(0编辑  收藏  举报