Array:
sql
create table if not exists explode_array
(
userId string,
userName string,
tags array<string>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ',';
导入数据:
load data local inpath '/Users/zhenqin/temp/data.txt' overwrite into table explode_array;
查询:
sql
select userId,userName,tagId from explode_array lateral view explode(tags) as tagId;
select user_tag.tagId, count(*) as count from (select userId,userName,tagId from explode_array lateral view explode(tags) tags as tagId) as user_tag group by user_tag.tagId order by count DESC;
Map
sql
create table if not exists explode_map
(
userId string,
userName string,
tags map<string, int>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':';
导入数据:
load data local inpath '/Users/zhenqin/temp/data_map.txt' overwrite into table explode_map;
查询:
select userId,userName,tagId,weight from explode_map lateral view explode(tags) tags as tagId, weight;
select user_tag.tagId, count(*) as count from (select userId,userName,tagId,weight from explode_map lateral view explode(tags) tags as tagId, weight) as user_tag group by user_tag.tagId order by count DESC;
select userId, userName, array_contains(map_keys(tags), '90') as tagId from explode_map;
select userId, userName, map_keys(tags) as tagIds from explode_map where array_contains(map_keys(tags), '90');