hive中对复杂数据类型的支持

本文详细介绍了Hive中复合数据类型的应用,包括Struct、Map、Array的创建、导入数据及查询示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive提供了复合数据类型:
struct:struct内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT{a INT; b INT},可以通过c.a来访问域a
map(Key-Value对):访问指定域可以通过["指定域名称"]进行,例如,一个map M包含了一个group->gid的kv对,gid的值可以通过M['group']来获取
array:array中的数据为相同类型,例如,array A中元素['a','b','c'],则A[0]的值为'a',A[1]的值为'b'


**hive中暂没有支持list类型**


/*struct使用示例*/


建表:
create table s1(id INT,info struct<p1:string,p2:int>) 


ROW FORMAT DELIMITED //指定记录按行划分
FIELDS TERMINATED BY ','//指定元组之间的分隔符 


COLLECTION ITEMS TERMINATED BY ':';//指定元组各个字段之间的分隔符 






导入数据:
LOAD DATA LOCAL INPATH '/hivetest1' INTO TABLE s1;




/hivetest1中数据格式如下:
1,zhou:30
2,yan:30
3,chen:20


查询:
select info.p1 from s1;






查询结果为:
zhou
yan
chen


/*array使用示例*/


建表:
create table s2(id INT,info array<INT>) 


ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 


COLLECTION ITEMS TERMINATED BY ':';


导入数据:


LOAD DATA LOCAL INPATH '/hivetest2' INTO TABLE s2;
/hivetest2中数据格式如下:


1,1:2:3:4
2,5:6
3,7:8:9:10
4


,11


查询:
select info[1] from s2 ;


查询结果为:
2


6
8
NULL




/*map使用示例*/


建表:
create table s3(id INT,info map<STRING,INT>) 


ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 


COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':';//指定key-value分隔符


导入数据:


LOAD DATA LOCAL INPATH '/hivetest3' INTO TABLE s3;




/hivetest3中数据格式如下:
1 job:80,team:60,person:70
2 job:60,team:80
3 job:90,team:70,person:100


查询:
select info['person'] from s3;
查询结果为:
70
NULL
100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值