Hive数据类型这里介绍 Array,Map,Struct。个人理解看来联系Java当中的相对应的数据类型学习会更容易理解。
一,Array(存放的数据类型)
①准备好一些数据,第一步建表和导入数据,注意这里建表和普通的建表稍微有些许的不同
create table hive_array(name string,city_info array<string>)
row format delimited fields terminated by '\t'
COLLECTION ITEMS TERMINATED BY ',';
load data local inpath '/home/hadoop/kzw/hive_array.txt' overwrite into table hive_array;
②接下来只需要会查询和转换即可,字段名[index]
select name ,city_info[index] from hive_array;//index start 0
求字段中包含的值
select * from hive_array where array_contains(city_info,'beijing');
二,map类型(key类型相同)
准备的数据类型
建表和导入数据(注意建表语句)
create table hive_map(id int,name string,member 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/kzw/hive_map.txt' overwrite into table hive_map;
查询,字段名[‘key’]
select id ,name ,member['father'] from hive_map;
select map_keys/[map_values](member) from hive_map;//查询key/values的集合,结果是一个数组
三,结构体
create table hive_struct(ip string, userinfo struct<name:string, age:int>)
row format delimited fields terminated by '#'
COLLECTION ITEMS TERMINATED BY ':';
userinfo.xxx//userinfo.name,userinfo.age