Hive的三种复杂数据类型

Hive的复杂数据类型主要分为3类:arraymapstruct

1. array

测试数据: 列间用 \t 分隔,第二列用逗号分隔。

zhangsan	chengdu,shanghai,beijing
lisi	tianjin,taiyuan,chongqing
wangwu	xian,nanning,beijing

建表:

create table hive_array(
name string,
locations array<string>
) row format delimited fields terminated by '\t'
collection items terminated by ',';

查询:

//取出数组的第一个元素
select name, locations[0] from hive_array;	

//返回数组长度
select name, size(locations) from hive_array;	

//包含返回true,否则false
select * from hive_array where array_contains(locations,'tianjin');	

2. map

测试数据:

1,zhangsan,father:xiaoming#mother:xiaohuang,28
2,lisi,father:xiaoxi#mother:xiaofang#brother:xiaoli,22
3,wangwu,father:xiaoqiang#mother:xiaohong#brother:xiaowang,35

建表:

create table hive_map(
id int,
name string,
members map<string,string>,
age int
) row format delimited fields terminated by ','
collection items terminated by '#'	//组间分隔符
map keys terminated by ':';			//组内分隔符

查询:

select name, members['father'], members['mother'] from hive_map;
select name, map_keys(members) from hive_map;
select name, size(members) from hive_map;
select name, members['brother'] from hive_map where array_contains(map_keys(members),'brother');	
//拥有兄弟的人及兄弟名称

3. struct

测试数据:

192.168.1.1#zhangsan:40
192.168.1.2#lisi:25
192.168.1.3#wangwu:38

建表:

create table hive_struct(
ip string,
userinfo struct<name:string,age:int>,
) row format delimited fields terminated by '#'
collection items terminated by ':';		//组间分隔符

查询:

select ip, userinfo.name, userinfo.age from hive_struct;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值