1.函数说明
EXPLODE(col):将 hive 一列中复杂的 array 或者 map 结构拆分成多行。
LATERAL VIEW :
用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias
解释:用于和 split, explode 等 UDTF 一起使用,它能够将一列数据拆成多行数据,在此
基础上可以对拆分后的数据进行聚合。
2.数据准备
move_name | category |
---|---|
《疑犯追踪》 | 悬疑,动作,科幻,剧情 |
《Lie to me》 | 悬疑,警匪,动作,心理,剧情 |
《战狼 2》 | 战争,动作,灾难 |
3.需求
将电影分类中的数组数据展开。结果如下:
move_name | category_name |
---|---|
《疑犯追踪》 | 悬疑 |
《疑犯追踪》 | 动作 |
《疑犯追踪》 | 科幻 |
《疑犯追踪》 | 剧情 |
《Lie to me》 | 悬疑 |
《Lie to me》 | 警匪 |
《Lie to me》 | 动作 |
《Lie to me》 | 心理 |
《Lie to me》 | 剧情 |
《战狼 2》 | 战争 |
《战狼 2》 | 动作 |
《战狼 2》 | 灾难 |
5.创建 hive 表并导入数据
create table movie_info( movie string, category array) row format delimited fields terminated by "\t" collection items terminated by ",";
load data local inpath "file_path" into table movie_info;
6.按需求查询数据
select movie,category_name from movie_info lateral view explode(category) table_tmp as category_name;