基于SparkSQL的电影分析项目实战

您所在的位置:网站首页 vscode一直running 基于SparkSQL的电影分析项目实战

基于SparkSQL的电影分析项目实战

#基于SparkSQL的电影分析项目实战| 来源: 网络整理| 查看: 265

在本篇分享中,将介绍一个完整的项目案例,该案例会真实还原企业中SparkSQL的开发流程,手把手教你构建一个基于SparkSQL的分析系统。为了讲解方便,我会对代码进行拆解,完整的代码已上传至GitHub,想看完整代码可以去clone,顺便给个Star。以下是全文,希望本文对你有所帮助。看完记得三连:分享、点赞、在看

项目介绍

数据集介绍

使用MovieLens的名称为ml-25m.zip的数据集,使用的文件时movies.csv和ratings.csv,上述文件的下载地址为:

movies.csv

该文件是电影数据,对应的为维表数据,大小为2.89MB,包括6万多部电影,其数据格式为[movieId,title,genres],分别对应[电影id,电影名称,电影所属分类],样例数据如下所示:逗号分隔

ratings.csv

该文件为定影评分数据,对应为事实表数据,大小为646MB,其数据格式为:[userId,movieId,rating,timestamp],分别对应[用户id,电影id,评分,时间戳],样例数据如下所示:逗号分隔

项目代码结构

需求分析

需求1:查找电影评分个数超过5000,且平均评分较高的前十部电影名称及其对应的平均评分

需求2:查找每个电影类别及其对应的平均评分

需求3:查找被评分次数较多的前十部电影

代码讲解

DemoMainApp

该类是程序执行的入口,主要是获取数据源,转换成DataFrame,并调用封装好的业务逻辑类。

Entry

该类为实体类,封装了数据源的样例类和结果表的样例类

SchemaLoader

该类封装了数据集的schema信息,主要用于读取数据源是指定schema信息

JDBCUtil

该类封装了连接MySQL的逻辑,主要用于连接MySQL,在业务逻辑代码中会使用该工具类获取MySQL连接,将结果数据写入到MySQL中。

需求1实现

BestFilmsByOverallRating

需求1实现的业务逻辑封装。该类有一个run()方法,主要是封装计算逻辑。

需求1结果

结果表建表语句

统计结果

平均评分最高的前十部电影如下:

上述电影评分对应的电影中文名称为:

需求2实现

GenresByAverageRating

需求2实现的业务逻辑封装。该类有一个run()方法,主要是封装计算逻辑。

需求2结果

结果表建表语句

统计结果

共有20个电影分类,每个电影分类的平均评分为:

电影分类对应的中文名称为:

需求3实现

MostRatedFilms

需求3实现的业务逻辑封装。该类有一个run()方法,主要是封装计算逻辑。

需求3结果

结果表创建语句

统计结果

评分次数较多的电影对应的中文名称为:

总结

本文主要是基于SparkSQL对MovieLens数据集进行统计分析,完整实现了三个需求,并给对每个需求都给出了详细的代码实现和结果分析。本案例还原了企业使用SparkSQL进行实现数据统计的基本流程,通过本文,或许你对SparkSQL的应用有了更加深刻的认识,希望本文对你有所帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3