1、Array
create table hive_array(
name string,
work_locations array<string>
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ',';
load data local inpath '/home/hadoop/data/hive_array.txt' overwrite into table hive_array
hive> select * from hive_array;
OK
ruoze ["shanghai","hangzhou","beji"]
jepson ["hangzhou","wuhan","shenzheng"]
Time taken: 0.283 seconds, Fetched: 2 row(s)
select * from hive_array where array_contains(work_locations,"shanghai");
select name,work_locations[2] from hive_array;
select name,size(work_locations) from hive_array;
2、Map
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 ':';
load data local inpath '/home/hadoop/data/hive_map.txt'
overwrite into table hive_map;
hive> select * from hive_map;
OK
1 zhansan {"father":"xiaoming","mother":"xiaohuang","brother":"xiaoxu"} 28
2 lis {"father":"mayun","mother":"huangyi","brother":"guanyu"} 22
3 wangwu {"father":"wangjianlin","mother":"ruhua","sister":"jianting"} 29
4 mayun {"father":"mayongzhen","mother":"angelababy"} 26
select name,members["father"] from hive_map;
select map_keys(members) from hive_map;
select map_values(members) from hive_map;
select size(members) from hive_map;
3、Struct
create table hive_struct(
ip string,
userinfo struct<name:string,age:int>
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '#'
COLLECTION ITEMS TERMINATED BY ':';
load data local inpath '/home/hadoop/data/hive_struct.txt'
overwrite into table hive_struct;
hive> select * from hive_struct;
OK
192.168.1.1 {"name":"zhangsan","age":40}
192.168.1.2 {"name":"lisi","age":50}
192.168.1.3 {"name":"wangwu","age":60}
192.168.1.4 {"name":"zhaoliu","age":70}
Time taken: 0.206 seconds, Fetched: 4 row(s)
select ip,userinfo.name,userinfo.age from hive_struct;