基于Spark 的电影推荐系统

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1215

基于大数据的电影推荐系统主要分为两部分:基于历史数据的离线处理和基于实时流的实时处理。离线处理是基于历史数据,实时处理是结合历史数据和实时采集的数据,运用协同过滤算法训练推荐模型,预测各个用户未看电影的评分,为用户推荐评分最高的前10部。系统流程图如图所示:

image.png

图1 基于大数据的电影推荐系统流程图

首先在网上下载推荐引擎数据集MovieLens,保存在Hbase中,在Hbase数据库中包含了用户表(6040个用户),电影表(3853部电影)以及评分表(用户对电影的百万条数据)。 推荐引擎会读取Hbase中的评分数据 ,并使用基于模型的协同过滤算法-ALS对其进行训练,得到初始的模型,使用这个模型对Hbase中所有用户进行图书推荐(取 top10),并将推荐结果保存在Hbase中,以上阶段为系统初始化阶段。

实时流数据将通过一个程序向kafka推送数据,模拟用户当前在网站上的实时评分行为,在最后使用用户进行观察测试时,程序将会只模拟这个用户的评分行为以便观察推荐系统的实时性。

在系统初始化完成之后,开启实时推荐引擎 ,Spark Streaming对接kafka不断生成的用户行为数据,并和Hbase中的原始数据混合,训练出新的模型,产生推荐结果保存 ,不断地进行流数据的读取、训练和保存推荐结果,直至系统关闭或者无流数据产生 。

将上面的流程代码打包成一个.jar包,在集群平台运行和检测运行结果。首先进入集群平台的Task Scheduler,在任务调度模块执行.jar包, .jar包主要分两部分,一部分是向kafka推送数据,另一部分是结合数据训练推荐模型,产生推荐结果。通过流程定义,上传.jar包,指明要运行的类名,分别运行.jar包的两个程序。

然后进入查询分析器模块,建立Hbase中用户表的hive外部表,通过Hql语句,执行mapreduce任务查询hive外部表来查看hbase中的数据,验证实时推荐结果。

源码下载链接请扫描网站二维码进群免费获取。

image.png

你可能感兴趣的:(spark,spark)