数据:
肖生客的救赎,费兰克·德拉邦特:安迪·杜佛兰,1994-9-10
录取通知,斯蒂夫·平克:乔纳·希尔,2006-8-18
楚门的世界,金·凯瑞:劳拉·琳妮,1998-6-5
要求1.查询每个电影的主演
肖生客的救赎 费兰克·德拉邦特 1994-9-10
要求2 查询每个电影有多少个演员
肖生客的救赎 2
要求3 查询单个演员演了什么电影
楚门的世界,金·凯瑞:劳拉·琳妮,1998-6-5
解题思路:
建立表 :
create table luck_movie(moive_name string,
actors array<string>,
first_show date)
row format delimited fields terminated by ','
collection items terminated by ':';
导入数据:
load data local inpath "/home/yh/hivedata/dtc.txt" into table luck_movie ;
//这里用的本地地址
查看表:
select * from luck_movie ; //确定数据是否导入
查询1:每个电影的主演员(第一个演员)
select moive_name ,actors[0],first_show from luck_movie ;
因为创建表的时候 演员数据为Array 数组型 这里直接拿0索引 也就是第一演员即可
查询2:每个电影有几个演员
select moive_name ,size(actors) from luck_movie ;
同理1,这里只需要获取到这个数组的长度 size 即可
查询3:金·凯瑞演员演了什么电影
select * from luck_movie where array_contains(actors,"金·凯瑞") ;
这里使用了函数:array_contains 是否包含了什么 (分组名,查询条件 )
此函数只适用于Array数组结构下的数据查询
如果是用上映时间查询 简单的sql语句即可:
select * from luck_movie where first_show ="1998-06-05" ;