基于SparkSQL的电影分析项目实战 |
您所在的位置:网站首页 › vscode一直running › 基于SparkSQL的电影分析项目实战 |
在本篇分享中,将介绍一个完整的项目案例,该案例会真实还原企业中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 |