基于Spark的电影推荐系统

本次项目是基于大数据过滤引擎的电影推荐系统--“懂你”电影网站,包含了爬虫、电影网站(前端和后端)、后台管理系统以及推荐系统(Spark)。

一、爬虫

开发环境: 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

项目描述: 感兴趣的朋友可以通过地址 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

基于Spark的电影推荐系统(毕业设计)相关推荐

  1. 基于Spark的电影推荐系统(电影网站)

    第一部分-电影网站: 软件架构: SpringBoot+Mybatis+JSP 项目描述:主要实现电影网站的展现 和 用户的所有动作的地方 技术选型: 技术 名称 官网 Spring Boot 容器 ...

  2. 基于Spark的电影推荐系统(推荐系统~1)

    第四部分-推荐系统-项目介绍 行业背景: 快速:Apache Spark以内存计算为核心 通用 :一站式解决各个问题,ADHOC SQL查询,流计算,数据挖掘,图计算 完整的生态圈 只要掌握Spark ...

  3. 基于Spark的电影推荐系统(推荐系统~4)

    第四部分-推荐系统-模型训练 本模块基于第3节 数据加工得到的训练集和测试集数据 做模型训练,最后得到一系列的模型,进而做 预测. 训练多个模型,取其中最好,即取RMSE(均方根误差)值最小的模型 说 ...

  4. 基于Spark的电影推荐系统(推荐系统~5)

    第四部分-推荐系统-离线推荐 本模块基于第4节得到的模型,开始为用户做离线推荐,推荐用户最有可能喜爱的5部电影. 说明几点 1.主要分为两个模块.其一是为 单个随机用户 做推荐,其二是为 所有用户做推 ...

  5. 电影推荐系统 python简书_基于Spark的电影推荐系统(实战简介)

    ## 写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://gith ...

  6. 基于Spark的电影推荐系统(推荐系统~7)

    第四部分-推荐系统-实时推荐 本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影. 说明几点 1.数据来源是 testData 测试集的数据.这里面的用户,可能存在于训练 ...

  7. java项目-第96期基于ssm+hadoop+spark的电影推荐系统-大数据毕业设计

    java项目-第96期基于ssm+hadoop+spark的电影推荐系统 [源码请到资源专栏下载] 1.项目简述 电影推荐系统,基于大数据分析的推荐系统,适合学习和企业应用. 首先电影推荐相对于其它推 ...

  8. 基于Spark的大规模推荐系统特征工程

    分享嘉宾:陈迪豪 第四范式 架构师 编辑整理:刘璐 出品平台:第四范式天枢.DataFunTalk 导读:特征工程在推荐系统中有着举足轻重的作用,大规模特征工程处理的效率极大的影响了推荐系统线上的性能 ...

  9. 基于Spark的新闻推荐系统,包含爬虫项目、web网站以及spark推荐系统

    下载地址:https://download.csdn.net/download/ouyangxiaobai123/22174377 项目介绍: 基于Spark的新闻推荐系统,包含爬虫项目.web网站以 ...

  10. springboot基于JAVA的电影推荐系统的开发与实现毕业设计源码112306

    目    录 摘要 Abstract 第1章前言 1.1研究背景 1.2研究现状 1.3系统开发目标 第2章技术与原理 2.1  JSP介绍 2.2  JAVA技术 2.3  MySQL数据库 2.4 ...

最新文章

  1. oracle sum 数据类型,五、Oracle内置函数
  2. html链接是什么意思,html中url什么意思?怎么用?
  3. 前端学习(654):优化插件
  4. 鸿蒙空间是什么星辰变,飞升之后做什么《星辰变》神魔妖界收伏奇珍异兽
  5. (01)FPGA时序分析概念
  6. Python sys模块参考手册
  7. Win10系统,开机后提示Desktp不可用的故障解决方法。
  8. jmeter 导出聚合报告_使用Jmeter聚合报告生成对比图表
  9. 用ajax向处理页面传送路径问题解决方法
  10. Java编程语言有哪些优势
  11. 七个 ios 上的 android 模拟器
  12. 鼠标滚轮无法滚动处理、有滚动条但鼠标中间的滚轮滚动时页面不随之滚动
  13. 脚踩智能汽车春风,百度踏上千亿美元市值征程
  14. 政府部门服务器拒收邮件 怎么办,hotmail 邮箱最近反映拒收邮件,请问怎么解决?...
  15. android /linux休眠与唤醒(一)
  16. 推荐系统中的常用算法——基于Session的推荐
  17. 使用pm命令安装或卸载apk,静默安装、卸载方法
  18. 国际象棋java_国际象棋源代码-JAVA
  19. HTML5之HTML+CSS3代码(一)
  20. 2021一款精美图片压缩网站源码

热门文章

  1. JSP设置网站favicon.ico
  2. 华三交换机配置access命令_H3C 交换机常用配置命令
  3. C#实现Omron欧姆龙PLC的Fins Tcp协议[转]
  4. android 10 多开,多开分身安卓10版
  5. FPS综述:植物次生代谢物与微生物组互作研究进展
  6. 西南大学计算机试题答案,17秋西南大学计算机组成原理【0013】机考答案
  7. 求一段看不懂的乱码_这些真的不是乱码,是汉字!竟然一个都不认识
  8. Python 玩转数据 3 - NumPy ndarray Array Indexing, Slicing, Striding, View Subarray,Copy Subarray
  9. apfs扩容_小米2020pro增强版 黑苹果 最新教程
  10. 冲刺计划sprint