电影票房之数据分析(Hive)
第1关:统计2020年上映的电影中,当前总票房最高的10部电影
本关任务
基于EduCoder平台提供的初始数据集,统计 2020 年上映的电影中,当前总票房最高的 10 部电影。
编程要求
本实验环境已开启Hadoop
服务
-
在 hive 中创建数据库
mydb
; -
在
mydb
中创建moviecleaned
表,将数据集movies.txt
导入moviecleaned
表中。注意:数据集所在位置:/data/workspace/myshixun/data/movies.txt
,数据集文件字段之间以\t
分割,文件部分数据展示如下:
天气之子 6676.11 21.2% 92616 25.4% 24 19.9% 11300.0 上映2天 2019-11-02 2019-11-01
天池水怪 1.14 <0.1% 57 <0.1% 6 -- 84.4 2020-10-09 往期电影
太空狗之月球大冒险 3.58 <0.1% 333 <0.1% 4 4.5% 270.7 上映14天 2019-12-27 2019-12-14
夺冠 2985.81 60.4% 133808 50.3% 6 4.0% 22900.0 上映5天 2020-09-29 2020-09-25
3.在 hive 数据库 mydb
中,创建 top10_boxoffice
表 ,使用 Hive SQL 来统计 2020 年上映的电影中当前总票房最高的 10 部电影(当前总票房保留 1 位小数),并插入到top10_boxoffice
表。
查询结果样例如下:
movie_name boxoffice
八佰 309200.0
我和我的家乡 225600.0
相关数据及结构说明
数据集对应字段说明:
字段名 | 说明 | 数据类型 |
---|---|---|
movie_name | 电影名 | string |
boxoffice | 当日综合票房 | string |
box_rate | 票房占比 | string |
sessions | 排片场次 | string |
show_count_rate | 排片占比 | string |
avg_number | 场均人次 | string |
attendance | 上座率 | string |
total_boxoffice | 当前总票房 | string |
movie_days | 上映天数 | string |
current_time | 当前日期 | string |
releaseDate | 上映日期 | string |
top10_boxoffice 表结构:
字段名 | 类型 | 说明 |
---|---|---|
movie_name | string | 电影名 |
boxoffice | double | 票房 |
注意事项
-
任务完成后请点击"评测"按钮,系统验证 top10_boxoffice 表是否存在并查询表内容,程序未通过的情况下,可以点击测试集查看具体问题;
-
本任务设置了多个测试集,通过其中任一测试集将可获得对应分数;
-
实训总共有五个关卡,点击关卡目录图标可完成切换,如下图:
考核点说明
从 mydb 数据库中的 top10_boxoffice 表查询出来的内容是否正确。
开始你的任务吧,祝你成功!
AC:
#进入hive hive #在hive中创建数据库 mydb create database mydb; #使用数据库 mydb use mydb; #创建表moviecleaned并使用"/t"分割字段 create table moviecleaned(movie_name string,boxoffice string, box_rate string, sessions string, show_count_rate string, avg_number string, attendance string, total_boxoffice string, movie_days string,current_time string,releaseDate string) row format delimited fields terminated by '\t' stored as textfile; #将本地清洗后的数据导入moviecleaned表中 load data local inpath '/data/workspace/myshixun/data/movies.txt' into table moviecleaned; #创建top10_boxoffice表,用来存放数据查询的结果 create table top10_boxoffice(movie_name string, boxoffice float) row format delimited fields terminated by '\t' stored as textfile; #查询,并将结果导入top10_boxoffice表中 insert overwrite table top10_boxoffice select movie_name,max(round(total_boxoffice,1)) m from moviecleaned WHERE releaseDate like '2020%' group by movie_name ORDER BY m DESC limit 10;