1、表结构
movie | category |
---|---|
《疑犯追踪》 | 悬疑,动作,科幻,剧情 |
《Lie to me》 | 悬疑,警匪,动作,心理,剧情 |
《战狼2》 | 战争,动作,灾难 |
2、movie.txt
《疑犯追踪》 悬疑,动作,科幻,剧情
《Lie to me》 悬疑,警匪,动作,心理,剧情
《战狼2》 战争,动作,灾难
3、创建表
hive> create table movie_info(
movie string,
category array<string>)
row format delimited fields terminated by "\t"
collection items terminated by ",";
hive 支持数组和字典,创建一个category数组列,用逗号分割
4、导入数据
hive> load data local inpath "movie.txt" into table movie_info;
5、将电影分类中的数组数据展开
统计某一个类型的电影都有哪些
《疑犯追踪》 悬疑,动作,科幻,剧情
《Lie to me》 悬疑,警匪,动作,心理,剧情
《战狼2》 战争,动作,灾难
↓
《疑犯追踪》 悬疑
《疑犯追踪》 动作
《疑犯追踪》 科幻
《疑犯追踪》 剧情
《Lie to me》 悬疑
《Lie to me》 警匪
《Lie to me》 动作
《Lie to me》 心理
《Lie to me》 剧情
《战狼2》 战争
《战狼2》 动作
《战狼2》 灾难
select
movie,
category_name
from
movie_info lateral view explode(category) table_tmp as category_name;
注释
lateral view 侧写
explode 炸开
table_tmp 侧写表名
category_name 炸开后的数据
当你想从炸开的数据里面,直接获取原表中数据的关系的话,就需要用到侧写