大数据入门基础系列之详谈Hive 复合数据类型之结构体Structs

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

在前面的博文里,我已经介绍了

敲黑板,划重点

在前面的博文里,我首先详细撰写分享了

Hive复杂类型包括ARRAY, MAP, STRUCT, UNION,这些复杂类型是由基础类型组成的。

见官网

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

Complex Types

arrays: (Note: negative values and non-constant expressions are allowed as of Hive 0.14.)

maps: (Note: negative values and non-constant expressions are allowed as of Hive 0.14.)

structs:

union: (Note: Only available starting with Hive 0.7.0.)

Hive提供了4种复合数据类型:

在Hive中可以使用复合数据类型,有三种常用的类型:Array 数组,Map 字典,Struct结构。

Structs: structs内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT,我们可以通过c.a来访问域a。

Maps(K-V对):访问指定域可以通过["指定域名称"]进行,例如,一个Map M包含了一个group-》gid的kv对,gid的值可以通过M['group']来获取。

Arrays:array中的数据为相同类型,例如,假如array A中元素['a','b','c'],则A[1]的值为'b' 。

Unions:UNION将多个SELECT语句的结果集合并为一个独立的结果集。当前只能支持UNION ALL(bag union)。不消除重复行。每个select语句返回的列的数量和名字必须一样,否则,一个语法错误会被抛出。

Struct使用

1) 建表

Hive> create table student_test(id INT, infostruct< name:STRING, age:INT>)   > ROW FORMAT DELIMITED FIELDS TERMINATED BY','   > COLLECTION ITEMS TERMINATED BY':';

'FIELDS TERMINATED BY' :字段与字段之间的分隔符。'COLLECTION ITEMS TERMINATED BY' :一个字段各个item的分隔符。

2) 导入数据

$ cat test5.txt   1,zhou:30  2,yan:30  3,chen:20  4,li:80  Hive> LOAD DATA LOCAL INPATH'/home/hadoop/djt/test5.txt'INTO TABLE student_test;

3)查询数据

Hive>selectinfo.agefromstudent_test;

STRUCT:STRUCT可以包含不同数据类型的元素。这些元素可以通过”点语法”的方式来得到所需要的元素,比如user是一个STRUCT类型,那么可以通过user.address得到这个用户的地址。

操作实例

1、创建表

create table student_test(id int,infostruct)

row format delimited fields terminated by ","

collection items terminated by ":";

2、准备文件内容

[root@hello110 data]# vi student_test

1001,zhangsan:24

1002,lisi:25

1003,xiaoming:26

1004,dongdong:27

3、文件导入表

load data local inpath "/data/student_test" into table student_test;

4、查看表内容

hive (default)> select * from student_test;

OK

student_test.id student_test.info

1001 {"name":"zhangsan","age":24}

1002 {"name":"lisi","age":25}

1003 {"name":"xiaoming","age":26}

1004 {"name":"dongdong","age":27}

Time taken: 2.76 seconds, Fetched: 4 row(s)

---------------------------

hive (default)> selectinfo.name,info.agefrom student_test;

OK

name age

zhangsan 24

lisi 25

xiaoming 26

dongdong 27

Time taken: 0.294 seconds, Fetched: 4 row(s)

5、hadoop中的文件内容

下一篇是

见明天的

原创 大数据入门基础系列之详谈Hive 复合数据类型之映射Maps

http://www.cnblogs.com/zlslch/http://www.cnblogs.com/lchzls/

http://www.cnblogs.com/sunnyDream/

看完本文有收获?请转发分享给更多人

关注「大数据躺过的坑」,提升大神技能

觉得不错,请点赞和留言

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180111G0Z6IX00?refer=cp_1026

扫码关注云+社区