集合数据类型
Hive除了支持基本数据类型外,还支持Map,Array,Strcut,三种集合数据类型
好处: 由于集合数据类型的存储数据比基本类型要多,在存盘上存储可以连续存储,在查询操时可以减少磁盘的IO
坏处: 集合数据数据类型可能存在着数据的重复,而且有更大的导致数据不一致的风险
集合数据类型的简单使用
如下面的简单案例:
原始数据:
建表:
create table tb_teacher(
name string,
friends array<string>,
children map<string,int>,
address struct<street:string,city:string>
)
row format delimited fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';
插入数据:
load data local inpath "/usr/apps/hive/my_data/teacher.txt" into table tb_teacher;
1. struct数据查询(地址查询)
select
address.city,
address.street
from
tb_teacher;
查询结果:
2. 表中数组数据查询
select
friends[0] friend_0,
friends[1] friend_1
from
tb_teacher;
查询结果:
3. 应用数组长度及数组索引查询
select
name ,
friends[if(4>size(friends), size(friends)-1,4)] friends_last,
size(friends) friend_num
from
tb_teacher ;
查询结果:
4. 集合数据查询(集合长度,所有键,所有值,按索引查询键值)
select
size(children) map_children,
map_keys(children) K_childs_name,
map_values(children) V_childs_age,
map_keys(children)[0] K_0_child_name,
map_values(children)[0] V_0_child_age
from
tb_teacher;
查询结果:
以上是hive中集合数据类型的一些简单使用,通过这些表操作可以对集合数据类型的使用做一个大概的了解