您现在的位置是:首页 >技术交流 >电影票房之数据分析(Hive)--第1关网站首页技术交流

电影票房之数据分析(Hive)--第1关

呵呵world 2024-06-23 00:01:04
简介电影票房之数据分析(Hive)--第1关

电影票房之数据分析(Hive)

第1关:统计2020年上映的电影中,当前总票房最高的10部电影

本关任务

基于EduCoder平台提供的初始数据集,统计 2020 年上映的电影中,当前总票房最高的 10 部电影。

编程要求

本实验环境已开启Hadoop服务

  1. 在 hive 中创建数据库 mydb

  2. mydb 中创建 moviecleaned 表,将数据集movies.txt导入 moviecleaned 表中。注意:数据集所在位置:/data/workspace/myshixun/data/movies.txt,数据集文件字段之间以 分割,文件部分数据展示如下:

  1. 天气之子 6676.11 21.2% 92616 25.4% 24 19.9% 11300.0 上映2天 2019-11-02 2019-11-01
  2. 天池水怪 1.14 <0.1% 57 <0.1% 6 -- 84.4 2020-10-09 往期电影
  3. 太空狗之月球大冒险 3.58 <0.1% 333 <0.1% 4 4.5% 270.7 上映14天 2019-12-27 2019-12-14
  4. 夺冠 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表。

查询结果样例如下:

  1. movie_name boxoffice
  2. 八佰 309200.0
  3. 我和我的家乡 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_namestring电影名
boxofficedouble票房

注意事项

  • 任务完成后请点击"评测"按钮,系统验证 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 '	' 
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 '	' 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;

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。