转:基于Spark的电影推荐系统(包含爬虫项目、web网站、后台管理系统以及spark推荐系统)
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/u011254180/article/details/80006453
本次項目是基于大數據過濾引擎的電影推薦系統–“懂你”電影網站,包含了爬蟲、電影網站(前端和后端)、后臺管理系統以及推薦系統(Spark)。
項目代碼托管于github,大家可以自行下載。
一、爬蟲
開發環境: pycharm + python3.6
軟件架構: mysql + scrapy
運行環境: 本次爬取的內容在外網,所以需先翻墻后才能成功運行。
項目架構:
二、電影網站
開發環境: IntelliJ IDEA + maven + git + linux + powerdesigner
軟件架構: mysql + mybatis + spring + springmvc
項目描述: 懂你電影推薦網站是一個基于SSM框架的web項目,類似當前比較流行的豆瓣。用戶可以在網站上瀏覽電影信息和查詢電影,并且網站會根據用戶的瀏覽記錄給用戶進行實時的電影推薦。現已將網站部署在 http://115.159.204.68 網站上,感興趣的朋友可以自行查看。Git的安裝與IDEA和github的集成可以參考博客。
項目架構:
網站展示:
三、后臺管理系統
開發環境: IntelliJ IDEA + maven + git + linux + powerdesigner
軟件架構: mysql + mybatis + spring + springmvc + easyui
項目描述: 后臺管理系統主要對用戶信息和電影信息進行管理,如添加刪除電影信息和完成用戶信息的完善。其中為了更好地保存電影的圖片信息,搭建了圖片服務器,關于圖片服務器FastDFS的搭建可參考博客。后臺系統也布置在服務器上,感興趣的朋友可以通過地址 http://115.159.204.68:8080/ 訪問,為大家提供的測試賬號為 test,密碼為88888888。
項目架構:
網站展示:
四、推薦系統(Spark)
開發環境: IntelliJ IDEA + maven + git + linux
軟件架構: hadoop + zookeeper + flume + kafka + nginx + spark + hive + mysql
項目描述: 通過在電影網站系統埋點,獲取到用戶的點擊事件(如用戶喜歡哪部電影或對某部電影的評分)并將信息傳至推薦系統,推薦系統根據該信息做出相應的處理,將推薦結果存入到mysql數據庫中,web前端通過查詢數據庫將推薦的電影展示給用戶。推薦流程如下:
項目架構:
具體步驟:
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.電影數據集,地址: 本次下載的為1m大小的數據集
3.環境的搭建:
1)hdfs搭建
spark1上搭建namenode,secondary namenode,datanode
spark2上搭建datanode
spark3上搭建datanode
2)yarn搭建
spark1上搭建resourcemanager,nodemanager
spark2上搭建nodemanager
spark3上搭建nodemanager
3)mysql搭建,在spark2上搭建
4)hive搭建,在spark1上搭建
5)spark集群搭建,搭建standalone模式,spark1為master,其他為worker
4.數據的清洗: (上傳數據至hdfs中,hdfs操作)
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集成)
代碼位于 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論文)
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,用來接收電影網站上用戶的點擊信息,寫入本地文件
2)安裝flume,實時監控本地文件,將數據發送至kafka消息隊列中
10.實時數據的接收處理 ,如果打包到服務器運行錯誤,也可在本地IDEA上運行
1)安裝zookeeper
2)安裝kafka,用來接收發送數據
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
————————————————
版權聲明:本文為CSDN博主「xl.zhang」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011254180/article/details/80006453
總結
以上是生活随笔為你收集整理的转:基于Spark的电影推荐系统(包含爬虫项目、web网站、后台管理系统以及spark推荐系统)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery 判断所有图片加载完成
- 下一篇: java信息管理系统总结_java实现科