设为首页 收藏本站
查看: 893|回复: 0

[经验分享] Hadoop Hive 复合数据结构Array,Struct,Maps

[复制链接]

尚未签到

发表于 2016-12-12 06:00:26 | 显示全部楼层 |阅读模式
  在Hive 中如何使用符合数据结构  maps,array,structs
  1. Array的使用
  创建数据库表,以array作为数据类型
  create table  person(name string,work_locations array<string>)
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  COLLECTION ITEMS TERMINATED BY ',';
  数据
  biansutaobeijing,shanghai,tianjin,hangzhou
  linanchangchu,chengdu,wuhan
  入库数据
  LOAD DATA LOCAL INPATH '/home/hadoop/person.txt' OVERWRITE INTO TABLE person;
  查询
  hive> select * from person;
  biansutao       ["beijing","shanghai","tianjin","hangzhou"]
  linan   ["changchu","chengdu","wuhan"]
  Time taken: 0.355 seconds
  hive> select name from person;
  linan
  biansutao
  Time taken: 12.397 seconds
  hive> select work_locations[0] from person;
  changchu
  beijing
  Time taken: 13.214 seconds
  hive> select work_locations from person;   
  ["changchu","chengdu","wuhan"]
  ["beijing","shanghai","tianjin","hangzhou"]
  Time taken: 13.755 seconds
  hive> select work_locations[3] from person;
  NULL
  hangzhou
  Time taken: 12.722 seconds
  hive> select work_locations[4] from person;
  NULL
  NULL
  Time taken: 15.958 seconds
  2. Map 的使用
  创建数据库表
  create table score(name string, score map<string,int>)
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  COLLECTION ITEMS TERMINATED BY ','
  MAP KEYS TERMINATED BY ':';
  要入库的数据
  biansutao'数学':80,'语文':89,'英语':95
  jobs'语文':60,'数学':80,'英语':99
  入库数据
  LOAD DATA LOCAL INPATH '/home/hadoop/score.txt' OVERWRITE INTO TABLE score;
  查询
  hive> select * from score;
  biansutao       {"数学":80,"语文":89,"英语":95}
  jobs    {"语文":60,"数学":80,"英语":99}
  Time taken: 0.665 seconds
  hive> select name from score;
  jobs
  biansutao
  Time taken: 19.778 seconds
  hive> select t.score from score t;
  {"语文":60,"数学":80,"英语":99}
  {"数学":80,"语文":89,"英语":95}
  Time taken: 19.353 seconds
  hive> select t.score['语文'] from score t;
  60
  89
  Time taken: 13.054 seconds
  hive> select t.score['英语'] from score t;
  99
  95
  Time taken: 13.769 seconds
  3 Struct 的使用
  创建数据表
  CREATE TABLE test(id int,course struct<course:string,score:int>)
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  COLLECTION ITEMS TERMINATED BY ',';
  数据
  1english,80
  2math,89
  3chinese,95
  入库
  LOAD DATA LOCAL INPATH '/home/hadoop/test.txt' OVERWRITE INTO TABLE test;
  查询
  hive> select * from test;
  OK
  1       {"course":"english","score":80}
  2       {"course":"math","score":89}
  3       {"course":"chinese","score":95}
  Time taken: 0.275 seconds
  hive> select course from test;
  {"course":"english","score":80}
  {"course":"math","score":89}
  {"course":"chinese","score":95}
  Time taken: 44.968 seconds
  select t.course.course from test t; 
  english
  math
  chinese
  Time taken: 15.827 seconds
  hive> select t.course.score from test t;
  80
  89
  95
  Time taken: 13.235 seconds
  4. 数据组合 (不支持组合的复杂数据类型)
  LOAD DATA LOCAL INPATH '/home/hadoop/test.txt' OVERWRITE INTO TABLE test;
  create table test1(id int,a MAP<STRING,ARRAY<STRING>>)
  row format delimited fields terminated by '\t' 
  collection items terminated by ','
  MAP KEYS TERMINATED BY ':';
  1english:80,90,70
  2math:89,78,86
  3chinese:99,100,82
  LOAD DATA LOCAL INPATH '/home/hadoop/test1.txt' OVERWRITE INTO TABLE test1;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-312784-1-1.html 上篇帖子: 分布式计算开源框架Hadoop介绍(2)转 下篇帖子: Hadoop MapReduce进阶 使用分布式缓存进行replicated join
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表