大数据之Hive:hive函数讲解:列转行
Posted 浊酒南街
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之Hive:hive函数讲解:列转行相关的知识,希望对你有一定的参考价值。
1.列转行
1.1函数说明
explode(col):将hive一列中复杂的array或者map结构拆分成多行。
lateral view
lateral view explode (split(字段),"\\,") tableAlias as columnAlias
1.2数据准备
movie | category |
---|---|
《疑犯追踪 | 悬疑,动作,科幻,剧情 |
《Lie to me》 | 悬疑,警匪,动作,心理,剧情 |
《战狼2》 | 战争,动作,灾难 |
1.3需求
将电影分类中的数组数据展开。结果如下:
movie | category |
---|---|
《疑犯追踪》 | 悬疑 |
《疑犯追踪》 | 动作 |
《疑犯追踪》 | 科幻 |
《疑犯追踪》 | 剧情 |
《Lie to me》 | 悬疑 |
《Lie to me》 | 警匪 |
《Lie to me》 | 动作 |
《Lie to me》 | 心理 |
《Lie to me》 | 剧情 |
《战狼2》 | 战争 |
《战狼2》 | 动作 |
《战狼2》 | 灾难 |
4.创建本地movie.txt,导入数据
[hadoop@bigdata02 datas]$ vi movie.txt
《疑犯追踪》 悬疑,动作,科幻,剧情
《Lie to me》 悬疑,警匪,动作,心理,剧情
《战狼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 "/opt/module/datas/movie.txt" into table movie_info;
6.按需求查询数据
select
movie,
category_name
from
movie_info
lateral view explode(category) table_tmp as category_name;
情况复杂下,多用如下方式
select
movie,
category_name
from
movie_info
lateral view explode(split(category, "\\\\,")) table_tmp as category_name;
以上是关于大数据之Hive:hive函数讲解:列转行的主要内容,如果未能解决你的问题,请参考以下文章