课程大纲
第一模块:开发环境和集群准备
1、项目总体介绍和背景 a.基于Spark流行的大数据工具,开发一套电影推荐系统,让大家体验到如何实现自己的“猜你喜欢”的推荐。 很多电商和购物网站以及一些手机上的应用,猜你喜欢已经成为了必备功能,它对网站的销售有着很明显的刺激作用。
2、技术框架 a.大数据工具的选择,包括HDFS、HIVE、SPARK、KAFKA、HBASE、PHOENIX、ZEPPELIN等工具。
b.推荐的实时性,包括实时推荐和离线推荐。
3、系统要求以及开发的重点和难点 a. 完成一个推荐系统,为每个用户产生合适的电影产品的推荐结果。并且满足在性能,可靠性上的要求。
b. 实时数据的产生以及打到kafka消息队列中。
c. 对数据特征的发掘、清洗和加工。
d. 产生推荐系统的模型,并在多个模型中选择最佳的模型。
e. 解决整个系统中的性能问题。
4、集群准备 a. 搭建hadoop、hive、spark、kafka、zookeeper、hbase、phoenix、ZEPPELIN集群
b. 安装MYSQL,配置Hive metastore。
5、开发环境准备 a.在eclipse中构建项目,通过Maven来管理项目,并添加相关的依赖。
6、项目数据准备 a. 下载数据
第二模块:数据特点分析、清洗、加工成表和数据集的准备
1、分析数据的特点 a. 介绍各个文件的作用以及用户和电影的各个属性
b. 分析数据区间、特点
c. 探讨开发的思路
2、数据入HDFS,通过SPARKSQL整理成表 a. 构建RDD
b. 定义各个表对应的case class
c. 将RDD转换成DATAFRAME
d. 在sparksql中创建对应的表
e. 通过sparksql做一些查询来验证
3、数据集的准备 a. 字段剖析
b. 选择合适的字段将数据切分成测试集和验证集
第三模块:离线推荐模块的开发
1、数据加工,整理出rating a. 通过一系列的数据转换形成rating数据
2、依据ratings构建模型 a. 构建模型
3、理论补充 a. ALS算法的介绍
4、最佳参数的寻找 a. 评估模型好坏的指标RMSE
b. 模型相关的参数
c. 如何寻找最好的模型
5、离线推荐 a. 依据输入的某个用户ID,加载模型,产生推荐的电影结果,写入到数据库中
b. 依据输入的某个电影,加载模型,给出可能喜欢的用户
第四模块:Kafka+spark Streaming实时推荐模块的开发
1、构建实时数据流 a. 将ratings表里的数据通过模拟的方式打入到kafka的消息队列中。
2、在sparkstreaming中接收kafka消息队列中的数据,开发实时数据处理模块 a. 在sparkstreaming通过direct的方式来接收kakfa中的数据,然后加载已经存在的模型,实时生成推荐结果,写入到数据库中。
3、新用户或者未登录用户 a. 推荐策略的推想,以及实现用户的推荐。
第五模块:推荐系统的完善
1、系统稳定性的考虑 a. 开发脚本来保证实时应用的持续运行。
2、数据的展示 a. 通过Zeppelin来连接sparkSQL,提供一个方面快捷的数据探查的系统
3、探索其他的算法在推荐系统中可能的用处 a. 其他算法的介绍和应用
第六模块:性能优化
1、内存的分配 a. 思考和探讨各部分内存的优化思路
2、任务的调度 a. 寻求合理的资源分配及任务调度,修改适当的配置来完善系统
3、其他方面的优化
第七模块:项目总结