hive列转行案例

爷,独闯天下 提交于 2020-02-17 06:12:13

hive列转行

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<string>) 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;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!