暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

大数据躺过的坑 2018-01-11
656




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





点击上方 "大数据躺过的坑" 关注我们





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

大数据躺过的坑之2017年9月份所有微信公众号干货汇总

大数据躺过的坑之2017年10月份所有微信公众号干货汇总

大数据躺过的坑之2017年11月份所有微信公众号干货汇总

大数据躺过的坑之2017年12月份所有微信公众号干货汇总

原创 | 告别2017,迎接2018(九月哥)

2017,你可以偷偷给自己点个赞了

原创 | 大数据躺过的坑2018年的第一天(开启新的篇章)

原创 | 大数据入门基础系列之浅谈Hive和HBase的区别

【夜读】2018,愿我们记住18岁时的模样

原创 | 大数据入门基础系列之浅谈Hive的用户接口

【夜读】太多借口的人,过不好这一生

原创 | 大数据入门基础系列之详谈Hive的数据定义语言(DDL)

【夜读】你还没拼过,怎么能早早认输?

原创 | 大数据入门基础系列之详谈Hive的数据操作语言(DML)

原创 | 大数据躺过的坑内部收徒201801期(目前仅面向在校学生)(少量名额)

【夜读】真正努力的人,都很低调

原创 | 大数据入门基础系列之Hive的驱动器(包括解释器、编译器、优化器、执行器)

【夜读】为什么你特别努力,却总是碌碌无为?

原创 | 大数据入门基础系列之Hive驱动器Driver之解释器Parser

【夜读】读书与不读书,差别到底在哪里?

原创 | 大数据入门基础系列之Hive驱动器Driver之编译器Compiler

原创 | 大数据入门基础系列之Hive驱动器Driver之优化器optimizer

请回答,90后 | 大数据躺过的坑(九月哥)也是90后的一员...

【夜读】人和人的差距,都是从哪里拉开的?

原创 | 大数据入门基础系列之Hive驱动器Driver之执行器executer

【夜读】你还没有活成想要的样子,不丢脸

原创 | 大数据入门基础系列之再谈Hive内置的数据类型(另一个角度分析)












      敲黑板,划重点

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

原创 | 大数据入门基础系列之Hive 的基本数据类型、复杂数据类型、数据类型之间转换




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

        见官网

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


Complex Types

  • arrays: ARRAY<data_type>
     (Note: negative values and non-constant expressions are allowed as of Hive 0.14.)

  • maps: MAP<primitive_type, data_type>
     (Note: negative values and non-constant expressions are allowed as of Hive 0.14.)

  • structsSTRUCT<col_name : data_type [COMMENT col_comment], ...>

  • union: UNIONTYPE<data_type, data_type, ...>
     (Note: Only available starting with Hive 0.7.0.)







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

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

    Structs: structs内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT{a INT; b INT},我们可以通过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, info struct< 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> select info.age from student_test;
复制












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





操作实例


1、创建表

    create table student_test(id int,infostruct<name:string,age:int>)

    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)> select   info.name,info.age from 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/


       以及对应本平台的QQ群:161156071(大数据躺过的坑)








        本文版权归大数据躺过的坑)作者和微信公众平台共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。 如果您认为这篇文章还不错或者有所收获,您可以通过下边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【点赞】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力!

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

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






觉得不错,请点赞和留言↓

文章转载自大数据躺过的坑,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论