# 基于 Spark 的电影推荐系统
本次项目是基于大数据过滤引擎的电影推荐系统--“懂你”电影网站,包含了爬虫、电影网站(前端和后端)、后台管理系统以及推荐系统(Spark)。
![](http://www.writebug.com/myres/static/uploads/2021/10/22/ea5684ba650b7e8f466cfae18b40f713.writebug)
## 一、爬虫
**开发环境:** pycharm + python3.6
**软件架构:** MySQL + scrapy
**运行环境:** 本次爬取的内容在外网,所以需先翻墙后才能成功运行。
**项目架构:**
![](http://www.writebug.com/myres/static/uploads/2021/10/22/f47acadbbdbb7c18055e85a5d78561b8.writebug)
## 二、电影网站
**开发环境:** IntelliJ IDEA + maven + Git + Linux + powerdesigner
**软件架构:** MySQL + MyBatis + Spring + SpringMVC
**项目描述:** 懂你电影推荐网站是一个基于 SSM 框架的 Web 项目,类似当前比较流行的豆瓣。用户可以在网站上浏览电影信息和查询电影,并且网站会根据用户的浏览记录给用户进行实时的电影推荐。现已将网站部署在 [http://115.159.204.68](http://115.159.204.68) 网站上,感兴趣的朋友可以自行查看。Git 的安装与 IDEA 和 GitHub 的集成可以参考[博客](https://blog.csdn.net/u011254180/article/details/79857684)。
**项目架构:**
![](http://www.writebug.com/myres/static/uploads/2021/10/22/d2c3957415bccf3f87dc2cd906007316.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/9f565f8fb004dcb71e7e2c601fcc7c20.writebug)
## 三、后台管理系统
**开发环境:** IntelliJ IDEA + maven + Git + Linux + powerdesigner
**软件架构:** MySQL + MyBatis + Spring + SpringMVC + easyui
**项目描述:** 后台管理系统主要对用户信息和电影信息进行管理,如添加删除电影信息和完成用户信息的完善。其中为了更好地保存电影的图片信息,搭建了图片服务器,关于图片服务器 FastDFS 的搭建可参考[博客](https://blog.csdn.net/u011254180/article/details/79453775)。后台系统也布置在服务器上,感兴趣的朋友可以通过地址 [http://115.159.204.68/](http://115.159.204.68:8080/) 访问,为大家提供的测试账号为 test,密码为 88888888。
**项目架构:**
![](http://www.writebug.com/myres/static/uploads/2021/10/22/3ab55d17f89a071ae65dcc3d35bb0d35.writebug)
## 四、推荐系统(Spark)
**开发环境:** IntelliJ IDEA + maven + Git + Linux
**软件架构:** hadoop + zookeeper + flume + kafka + nginx + spark + hive + MySQL
**项目描述:** 通过在电影网站系统埋点,获取到用户的点击事件(如用户喜欢哪部电影或对某部电影的评分)并将信息传至推荐系统,推荐系统根据该信息做出相应的处理,将推荐结果存入到 MySQL 数据库中,Web 前端通过查询数据库将推荐的电影展示给用户。推荐流程如下:
![](http://www.writebug.com/myres/static/uploads/2021/10/22/cca8f67614ece52700e90ee81e0540ed.writebug)
**项目架构:**
![](http://www.writebug.com/myres/static/uploads/2021/10/22/6dd0cb12506a114660229f7b0d7f7736.writebug)
**具体步骤:**
**1.服务器规划(Linux 镜像为 centos6):**
- spark1(ip 192.168.13.134),分配 8G 内存,4 核
- spark2(ip 192.168.13.135),分配 6G 内存,4 核
- spark3(ip 192.168.13.136),分配 6G 内存,4 核
**2.电影数据集,[地址](https://grouplens.org/datasets/movielens/):** 本次下载的为 1m 大小的数据集
**3.环境的搭建:**
1)[hdfs 搭建](http://blog.csdn.net/u011254180/article/details/79377808)
- spark1 上搭建 namenode,secondary namenode,datanode
- spark2 上搭建 datanode
- spark3 上搭建 datanode
2)[yarn 搭建](http://blog.csdn.net/u011254180/article/details/79377808)
- spark1 上搭建 resourcemanager,nodemanager
- spark2 上搭建 nodemanager
- spark3 上搭建 nodemanager
3)[mysql 搭建](http://blog.csdn.net/u011254180/article/details/77893585),在 spark2 上搭建
4)[hive 搭建](http://blog.csdn.net/u011254180/article/details/78068897),在 spark1 上搭建
5)[spark 集群搭建](http://blog.csdn.net/u011254180/article/details/79381172),搭建 standalone 模式,spark1 为 master,其他为 worker
**4.数据的清洗:** (上传数据至 hdfs 中,[hdfs 操作](http://blog.csdn.net/u011254180/article/details/79399422))
1)启动 hdfs: [root@spark1 ~]# start-dfs.sh
2)启动 yarn: [root@spark1 ~]# start-yarn.sh
3)启动 MySQL: [root@spark2 ~]# service mysqld start
4)启动 hive: [root@spark1 ~]# hive --service metastore
5)启动 spark 集群: [root@spark1 spark-1.6.1]# ./sbin/start-all.sh
6)代码(com.zxl.datacleaner.ETL)打包上传([spark-sql 与 hive 集成](http://blog.csdn.net/u011254180/article/details/79395227))
- 代码位于 package com.zxl.datacleaner.ETL,打包为 ETL.jar
- 运行代码 spark-submit --class com.zxl.datacleaner.ETL --total-executor-cores 2 --executor-memory 2g lib/ETL.jar
- 成功于 hive 中建表
**5.数据的加工,** 根据 ALS 算法对数据建立模型([ALS 论文](https://github.com/ZzXxL1994/Machine-Learning-Papers/tree/master/ALS))
1)启动 hdfs: [root@spark1 ~]# start-dfs.sh
2)启动 yarn: [root@spark1 ~]# start-yarn.sh
3)启动 MySQL: [root@spark2 ~]# service mysqld start
4)启动 hive: [root@spark1 ~]# hive --service metastore
5)启动 spark 集群: [root@spark1 spark-1.6.1]# ./sbin/start-all.sh
6)代码(com.zxl.datacleaner.RatingData)打包上传,测试建立模型
**6.建立模型,** 根据 RMSE(均方根误差)选取较好的模型
1)启动上述的服务
2)代码(com.zxl.ml.ModelTraining)打包上传,建立模型
注:com.zxl.ml.ModelTraining2 中代码训练单个模型,其中参数 rank=50, iteration = 10, lambda = 0.01
- 代码位于 package com.zxl.ml.ModelTraining,打包为 Spark_Movie.jar
- 运行代码 spark-submit --class com.zxl.ml.ModelTraining lib/Spark_Movie.jar
**7.产生推荐结果**
1)启动上述的服务
2)代码(com.zxl.ml.Recommender)打包上传,产生推荐结果
**8.数据入库,** 存储为所有用户推荐的电影结果,MySQL 中存入的格式为(userid, movieid,rating)
1)启动上述的服务
2)代码(com.zxl.ml.RecommendForAllUsers)打包上传,数据入库
- 运行代码 spark-submit --class com.zxl.ml.RecommendForAllUsers --jars lib/mysql-connector-java-5.1.35-bin.jar lib/Spark_Movie.jar
**9.实时数据的发送**
1)[安装 nginx](https://blog.csdn.net/u011254180/article/details/77897663),用来接收电影网站上用户的点击信息,写入本地文件
2)[安装 flume](https://blog.csdn.net/u011254180/article/details/80000763),实时监控本地文件,将数据发送至 kafka 消息队列中
**10.实时数据的接收处理** ,如果打包到服务器运行错误,也可在本地 IDEA 上运行
1)[安装 zookeeper](http://blog.csdn.net/u011254180/article/details/79480234)
2)[安装 kafka](http://blog.csdn.net/u011254180/article/details/79481088),用来接收发送数据
3)启动上述的服务
4)启动 zookeeper: [root@spark1 soft]# zkServer.sh start
4)启动 flume:[root@spark1 flume]# bin/flume-ng agent -c ./conf/ -f conf/flume-conf.properties -Dflume.root.logger=DEBUG,console -n a1
5)启动 kafka: [root@spark1 kafka_2.11-0.10.1.0]# bin/kafka-server-start.sh config/server.properties
6)代码(com.zxl.datacleaner.PopularMovies2)运行,用于为没有登录或新用户推荐,默认推荐观看最多的 5 部电影
7)代码运行(需指定 jar 包 kafka-clients-0.10.1.0.jar)
- spark-submit --class com.zxl.streaming.SparkDrStreamALS --total-executor-cores 2 --executor-memory 1g --jars lib/kafka-clients-0.10.1.0.jar lib/Spark_Movie.jar
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本次项目是基于大数据过滤引擎的电影推荐系统--包含了爬虫、电影网站(前端和后端)、后台管理系统以及推荐系统(Spark)。 电影推荐网站是一个基于 SSM 框架的 Web 项目,类似当前比较流行的豆瓣。用户可以在网站上浏览电影信息和查询电影,并且网站会根据用户的浏览记录给用户进行实时的电影推荐 开发环境:** IntelliJ IDEA + maven + Git + Linux 软件架构:** hadoop + zookeeper + flume + kafka + nginx + spark + hive + MySQL 项目描述:** 通过在电影网站系统埋点,获取到用户的点击事件(如用户喜欢哪部电影或对某部电影的评分)并将信息传至推荐系统,推荐系统根据该信息做出相应的处理,将推荐结果存入到 MySQL 数据库中,Web 前端通过查询数据库将推荐的电影展示给用户
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计: 基于ssm的电影推荐系统 (1416个子文件)
_common_metadata 405B
_common_metadata 405B
_common_metadata 370B
_common_metadata 370B
_metadata 1KB
_metadata 1KB
_metadata 906B
_metadata 904B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
baidu 85B
zoo.cfg 1021B
scrapy.cfg 259B
nginx.conf 3KB
client.conf 35B
.part-r-00002-3a2367a6-4519-4d41-9c16-33e6e06e3a7c.gz.parquet.crc 540B
.part-r-00003-3a2367a6-4519-4d41-9c16-33e6e06e3a7c.gz.parquet.crc 540B
.part-r-00000-3a2367a6-4519-4d41-9c16-33e6e06e3a7c.gz.parquet.crc 540B
.part-r-00001-3a2367a6-4519-4d41-9c16-33e6e06e3a7c.gz.parquet.crc 540B
.part-r-00001-2faade97-c337-4e62-8923-0b93b1f0f195.gz.parquet.crc 340B
.part-r-00000-2faade97-c337-4e62-8923-0b93b1f0f195.gz.parquet.crc 336B
.part-r-00003-2faade97-c337-4e62-8923-0b93b1f0f195.gz.parquet.crc 336B
.part-r-00002-2faade97-c337-4e62-8923-0b93b1f0f195.gz.parquet.crc 336B
._metadata.crc 20B
._metadata.crc 20B
._common_metadata.crc 12B
._common_metadata.crc 12B
.part-00000.crc 12B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
douban.main.css 530KB
style.css 147KB
style.css 147KB
bootstrap.css 131KB
bootstrap.css 131KB
bootstrap.min.css 118KB
bootstrap.min.css 118KB
wholeframe.css 92KB
easyui.css 51KB
easyui.css 51KB
easyui.css 51KB
easyui.css 50KB
easyui.css 47KB
style.css 43KB
style.css 43KB
font-awesome.css 25KB
font-awesome.css 25KB
font-awesome.min.css 21KB
bootstrap-editable.css 21KB
bootstrap-editable.css 21KB
default.css 20KB
bootstrap-datetimepicker.css 12KB
bootstrap-fullcalendar.css 11KB
bootstrap-fullcalendar.css 11KB
bootstrap-datetimepicker.min.css 11KB
jquery-confirm.min.css 11KB
jquery-confirm.min.css 11KB
tabs.css 8KB
tabs.css 8KB
tabs.css 8KB
tabs.css 8KB
bootstrap-datetimepicker.min.css 8KB
dataTables.bootstrap.css 7KB
__init__.css 7KB
style-responsive.css 7KB
style-responsive.css 7KB
tabs.css 6KB
bootstrap-select.css 6KB
bootstrap-table.min.css 5KB
bootstrap-table.min.css 5KB
sb-admin-2.css 5KB
fileinput.min.css 5KB
fileinput.min.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
bootstrap-select.min.css 5KB
datagrid.css 5KB
login2.css 5KB
regandlogcommon.css 5KB
Homediscovery.css 4KB
jquery.fancybox.css 4KB
jquery.fancybox.css 4KB
multiple-select.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
color.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
共 1416 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15
资源评论
- DOUZHAOPENG11132024-06-11反正都是movielens的数据集。用来搞毕设还是可以的 ,icf算法练习一下
lazycatlove
- 粉丝: 936
- 资源: 73
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于知识图谱的推荐模型详细文档+全部资料+优秀项目.zip
- 基于知识图谱的书籍推荐的问答系统及可视化详细文档+全部资料+优秀项目.zip
- 基于知识图谱的心血管疾病问答系统详细文档+全部资料+优秀项目.zip
- 基于知识图谱的中药方剂可视化及问答系统详细文档+全部资料+优秀项目.zip
- 基于知识图谱技术优化漏洞检索-最初版本详细文档+全部资料+优秀项目.zip
- 机械设计SCARA机器人贴标机sw18可编辑全套设计资料100%好用.zip
- 机械设计SIM卡组装自动机sw18可编辑全套设计资料100%好用.zip
- 机械设计SATA7+6PIN自动检测包装机sw18可编辑全套设计资料100%好用.zip
- 机械设计W1300X L2000X H700动力辊道输送机sw20可编辑全套设计资料100%好用.zip
- 基于 vue + python + 树莓派的媒体播放器全部资料+详细文档+高分项目.zip
- 毕业设计,基于树莓派的远程温度监控系统设计全部资料+详细文档+高分项目.zip
- 基于 树莓派 的项目,天气实况、天气预报,实时温度、湿度、空气污染指数,自带中文语音播报,根据思科 EA 系列路由器,实现自动门禁功能。全部资料+详细文档+高分项目.zip
- 基于FLASK与opencv树莓派版本的简单直播系统,全部资料+详细文档+高分项目.zip
- 基于GPPO算法的树莓派小车路径规划全部资料+详细文档+高分项目.zip
- 基于Java编写的基于树莓派的电子墨水屏相册全部资料+详细文档+高分项目.zip
- 基于Picoprobe的树莓派pico调试器全部资料+详细文档+高分项目.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功