目录
一、map类型创建和查询
二、array类型创建和查询
三、struct类型创建和查询
一、map类型创建和查询
操作步骤
## 建表语句
create table hive_map(id int , name string , data_map map<string,string>)
row format delimited fields terminated by ' '
collection items terminated by ','
map keys terminated by ':';
## 原始数据
1 zs father:zsfa,moter:zsmo,brother:zsbr
2 ls father:lsfa,moter:lsmo,brother:lsbr-lsbr2
## 加载数据
load data local inpath '/root/data/hive-map.txt' overwrite into table hive_map;
## 数据查询
-- map_keys
select id,name,map_keys(data_map) from hive_map;
-- map_values:返回key和value的数组
select id,name,map_values(data_map) from hive_map;
-- 字段[key]
select id,name,data_map['brother'] from hive_map;
结果展示
hive> show tables;
OK
Time taken: 0.036 seconds
hive> create table hive_map(id int , name string , data_map map<string,string>)
> row format delimited fields terminated by ' '
> collection items terminated by ','
> map keys terminated by ':';
OK
Time taken: 0.059 seconds
hive> load data local inpath '/root/data/hive-map.txt' overwrite into table hive_map;
Loading data to table default.hive_map
OK
Time taken: 0.625 seconds
hive> select id,name,map_keys(data_map) from hive_map;
OK
1 zs ["father","moter","brother"]
2 ls ["father","moter","brother"]
Time taken: 0.159 seconds, Fetched: 2 row(s)
hive> select id,name,map_values(data_map) from hive_map;
OK
1 zs ["zsfa","zsmo","zsbr"]
2 ls ["lsfa","lsmo","lsbr-lsbr2"]
Time taken: 0.163 seconds, Fetched: 2 row(s)
hive> select id,name,data_map['brother'] from hive_map;
OK
1 zs zsbr
2 ls lsbr-lsbr2
Time taken: 0.18 seconds, Fetched: 2 row(s)
hive>
二、array类型创建和查询
## 建表语句
create table hive_array(name string , data_array array<string>)
row format delimited fields terminated by ' '
collection items terminated by ',';
## 原始数据
1 xiaohui,taoge,xingge,lianhang,guanyu
2 najie,xiaoqiao
3 余辉,涛哥,星哥,念行,冠宇
4 娜姐,小乔
## 加载数据
load data local inpath '/root/data/hive-array.txt' overwrite into table hive_array;
## 数据查询
select name , data_array from hive_array;
-- size 数组长度
select name , data_array ,size(data_array) from hive_array;
-- 字段[角标]
select name , data_array[0] ,size(data_array) from hive_array;
-- array_contains 函数:判断数组是否包含指定元素
select name , array_contains(data_array,"xiaohui") ,size(data_array) from hive_array;
结果展示
hive> create table hive_array(name string , data_array array<string>)
> row format delimited fields terminated by ' '
> collection items terminated by ',';
OK
Time taken: 0.052 seconds
hive> load data local inpath '/root/data/hive-array.txt' overwrite into table hive_array;
Loading data to table default.hive_array
OK
Time taken: 0.581 seconds
hive> select name , data_array from hive_array;
OK
1 ["xiaohui","taoge","xingge","lianhang","guanyu"]
2 ["najie","xiaoqiao"]
3 ["余辉","涛哥","星哥","念行","冠宇"]
4 ["娜姐","小乔"]
Time taken: 0.175 seconds, Fetched: 4 row(s)
hive> select name , data_array ,size(data_array) from hive_array;
OK
1 ["xiaohui","taoge","xingge","lianhang","guanyu"] 5
2 ["najie","xiaoqiao"] 2
3 ["余辉","涛哥","星哥","念行","冠宇"] 5
4 ["娜姐","小乔"] 2
Time taken: 0.119 seconds, Fetched: 4 row(s)
hive> select name , data_array[0] ,size(data_array) from hive_array;
OK
1 xiaohui 5
2 najie 2
3 余辉 5
4 娜姐 2
Time taken: 0.169 seconds, Fetched: 4 row(s)
hive> select name , array_contains(data_array,"xiaohui") ,size(data_array) from hive_array;
OK
1 true 5
2 false 2
3 false 5
4 false 2
Time taken: 0.16 seconds, Fetched: 4 row(s)
hive>
三、struct类型创建和查询
## 建表语句
create table hive_struct(id int , userinfo struct<name:string,age:int,sex:string,major:string>)
row format delimited fields terminated by ' '
collection items terminated by ':';
## 原始数据
1 xiaohui:18:M:teacher
2 lisi:30:W:student
## 加载数据
load data local inpath '/root/data/hive-struct.txt' overwrite into table hive_struct;
## 数据查询
select id, userinfo.name,userinfo.age,userinfo.sex,userinfo.major from hive_struct;
结果展示
hive> create table hive_struct(id int , userinfo struct<name:string,age:int,sex:string,major:string>)
> row format delimited fields terminated by ' '
> collection items terminated by ':';
OK
Time taken: 0.064 seconds
hive> load data local inpath '/root/data/hive-struct.txt' overwrite into table hive_struct;
Loading data to table default.hive_struct
OK
Time taken: 0.583 seconds
hive> select id, userinfo.name,userinfo.age,userinfo.sex,userinfo.major from hive_struct;
OK
1 xiaohui 18 M teacher
2 lisi 30 W student
Time taken: 0.172 seconds, Fetched: 2 row(s)
hive> select id,userinfo from hive_struct;
OK
1 {"name":"xiaohui","age":18,"sex":"M","major":"teacher"}
2 {"name":"lisi","age":30,"sex":"W","major":"student"}
Time taken: 0.144 seconds, Fetched: 2 row(s)