大数据hive10-hivesql进行数据列转行
2020-06-01 本文已影响0人
数据蝉
一、需求背景
image.png将电影分类中的数组数据展开。结果如下:
image.png
二、建表
create dw.table movie_info(
movie string,
category array<string>)
row format delimited fields terminated by "\t"
collection items terminated by ",";
三、插入数据
insert into dw.movie_info select '《疑犯追踪》' as movie,array('悬疑','动作','科幻','剧情') as category
insert into dw.movie_info select '《Lie to me》' as movie,array('悬疑','警匪','动作','心理','剧情') as category
insert into dw.movie_info select '《战狼2》' as movie,array('战争','动作','灾难') as category
四、按需求查询数据
select
movie,
category_name
from
dw.movie_info lateral view explode(category) table_tmp as category_name;
五、输出结果
image.png六、总结
1.函数说明
EXPLODE(col):将hive一列中复杂的array或者map结构拆分成多行。
LATERAL VIEW
用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias
解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。