斯帕克影视 基于SparkSQL的电影分析项目实战
在本次分享中,我们将介绍一个完整的项目案例,真实还原SparkSQL在企业中的开发过程,教你构建一个基于SparkSQL的分析系统。为了方便解释,我将对代码进行拆解,完整的代码已经上传到GitHub。如果你想看完整的代码,可以去克隆,顺便给个星。以下是全文,希望这篇文章对你有所帮助。看完之后,记住三个公司:分享、喜欢和观看
项目介绍
数据集介绍
使用MovieLens的命名为ml-25m.zip的数据集,使用的文件为movies.csv和ratings.csv以上文件的下载地址为:
movies.csv
文件为电影数据,对应维度表数据,大小为2.89MB,包含6万多部电影,数据格式为,相互对应。示例数据如下:逗号分隔
ratings.csv
该文件为定分数据,对应事实表数据,大小为646MB,数据格式为:,相互对应。示例数据如下:逗号分隔
项目代码结构
需求分析
要求1:找出电影评分5000分以上且平均分较高的前十名电影名及其对应的平均分
要求2:找到每一个电影类别及其对应的平均分数
要求三:找分数比较高的前十部电影
代码解释
DemoMainApp
这个类是程序执行的入口,主要是获取数据源,转换成DataFrame,调用封装的业务逻辑类。
进入
这个类是一个实体类,封装了数据源的样本类和结果表的样本类
SchemaLoader
这个类封装了数据集的模式信息,主要用于从数据源中读取指定的模式信息
JDBCUtil
这个类封装了连接MySQL的逻辑,主要用于连接MySQL。在业务逻辑代码中,这个工具类用于获取MySQL连接,并将结果数据写入MySQL。
要求1的实施
最佳电影分级
需求1实现的业务逻辑封装。这个类有一个run方法,主要封装计算逻辑。
要求1结果
结果表构建语句
统计结果
平均分最高的前十部电影如下:
与上述电影配乐对应的电影中文名为:
要求2的实施
GenresByAverageRating
需求2实现的业务逻辑封装。这个类有一个run方法,主要封装计算逻辑。
要求2结果
结果表构建语句
统计结果
共有20个电影类别,每个电影类别的平均得分为:
电影分类对应的中文名称有:
要求3实施
大多数电影
需求3实现的业务逻辑封装。这个类有一个run方法,主要封装计算逻辑。
要求3结果
结果表创建语句
统计结果
分数较高的电影对应的中文名称有:
摘要
本文基于SparkSQL对MovieLens数据集进行统计分析,完整实现了三个需求,并针对每个需求给出了详细的代码实现和结果分析。这个案例还原了企业使用SparkSQL实现数据统计的基本过程。通过本文,您可能对SparkSQL应用程序有了更深入的了解,希望本文对您有所帮助。