加入收藏 | 设为首页 | 会员中心 | 我要投稿 四平站长网 (https://www.0434zz.com.cn/)- 云服务器、对象存储、基础存储、视频终端、数据应用!
当前位置: 首页 > 大数据 > 正文

了解Hive中的集合数据类型

发布时间:2021-06-03 20:16:10 所属栏目:大数据 来源:互联网
导读:1. Array的使用 创建数据库表,以array作为数据类型 create table person(name string,work_locations arraystring) ROW FORMAT DELIMITED FIELDS TERMINATED BY t COLLECTION ITEMS TERMINATED BY ,; 数据 biansutao beijing,shanghai,tianjin,hangzhou li
1. Array的使用
创建数据库表,以array作为数据类型
create table  person(name string,work_locations array<string>) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY 't' 
COLLECTION ITEMS TERMINATED BY ','; 
数据
biansutao beijing,shanghai,tianjin,hangzhou 
linan changchu,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 
修改map字段的分隔符
Storage Desc Params:          
    colelction.delim        ##                   
    field.delim             t                   
    mapkey.delim            =                    
    serialization.format    t             
可以通过desc formatted tableName查看表的属性。
hive-2.1.1中,可以看出colelction.delim,这里是colelction而不是collection,hive里面这个单词写错了,所以还是要按照错误的来。
alter table t8 set serdepropertyes('colelction.delim'=','); 
3. Struct 的使用
创建数据表
CREATE TABLE test(id int,course struct<course:string,score:int>) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY 't' 
COLLECTION ITEMS TERMINATED BY ','; 
数据
1 english,80 
2 math,89 
3 chinese,95 
入库
LOAD DATA LOCAL INPATH '/home/hadoop/test.txt' OVERWRITE INTO TABLE test; 

(编辑:四平站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读