hive中explode函数的用法
explode函数是一个炸裂函数他可以做一下转换
将这个表格
+--------------+-----------------------------+
| movie.movie | movie.category |
+--------------+-----------------------------+
| 《疑犯追踪》 | ["悬疑","动作","科幻","剧情"] |
| 《Lie to me》 | ["悬疑","警匪","动作","心理","剧情"] |
| 《战狼2》 | ["战争","动作","灾难"] |
+--------------+-----------------------------+
转换成这个表格
+--------------+-----+
| movie | ty |
+--------------+-----+
| 《疑犯追踪》 | 悬疑 |
| 《疑犯追踪》 | 动作 |
| 《疑犯追踪》 | 科幻 |
| 《疑犯追踪》 | 剧情 |
| 《Lie to me》 | 悬疑 |
| 《Lie to me》 | 警匪 |
| 《Lie to me》 | 动作 |
| 《Lie to me》 | 心理 |
| 《Lie to me》 | 剧情 |
| 《战狼2》 | 战争 |
| 《战狼2》 | 动作 |
| 《战狼2》 | 灾难 |
+--------------+-----+
用法为
select
movie,
ty
from
movie
lateral view explode(category) t as ty
;
前提为建表语句
1.建表的时候必须将要炸裂的字段搞成array格式,或者map格式
2.这个字段必须用collection items terminated by ‘,’ 进行切分才能炸裂
create table movie (
movie string,
category array<string>
)
row format delimited fields terminated by '\t'
collection items terminated by ',';
load data local inpath '/root/mov.txt' overwrite into table movie;
如果不是这种格式我们要不重新建一个表,要不将格式类行进行转换!