大数据综合实战 - 基于大数据的电影推荐系统

发布时间:2026/9/24 3:47:31
大数据综合实战 - 基于大数据的电影推荐系统 大数据综合实战 - 基于大数据的电影推荐系统给计算机大学生送一次福利VM和报告位置通过网盘分享的文件基于大数据的电影推荐系统.zip链接: https://pan.baidu.com/s/1FLPWsSbLkAqZHrUtLCAbgw?pwddg41 提取码: dg41项目概述本项目是一个基于大数据技术栈的电影推荐系统采用协同过滤算法ALS为用户提供个性化电影推荐。项目涵盖了数据预处理、数据存储与管理、数据分析和数据可视化等完整流程。核心技术栈组件版本用途Ubuntu20.04.6 LTS操作系统Hadoop3.3.6分布式存储 (HDFS)Spark3.5.9分布式计算 (MLlib)MySQL8.0.28数据存储Node.js14.21.3Web 服务IntelliJ IDEA-开发环境Scala2.12编程语言实验环境配置虚拟机配置实验在 VMware 虚拟机中完成配置如下配置项值操作系统Ubuntu 20.04.6 LTS网卡ens33静态 IP192.168.227.129/24网关192.168.227.2DNS192.168.227.2 / 223.5.5.5虚拟机文件说明项目包含以下虚拟机相关文件VM/ ├── liufulai.vmdk # 主虚拟机磁盘 ├── liufulai-s001.vmdk ~ liufulai-s013.vmdk # 分片磁盘 ├── liufulai.vmx # 虚拟机配置文件 ├── liufulai.vmxf # 虚拟机扩展配置 ├── liufulai.vmsd # 快照描述文件 ├── liufulai.nvram # BIOS 配置 ├── liufulai.scoreboard # 计分板文件 ├── autoinst.flp # 自动安装软盘镜像 ├── autoinst.iso # 自动安装 ISO 镜像 ├── vmware.log # VMware 日志 └── mksSandbox.log # MKS 沙箱日志系统架构┌─────────────────────────────────────────────────────────────────┐ │ 用户界面层 (Node.js) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 首页 │ │ 登录页 │ │ 评分页 │ │ 推荐页 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 服务层 (Express) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 用户管理 │ │ 评分管理 │ │ 推荐服务 │ │ 电影查询 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 数据处理层 (Spark) │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ ALS 协同过滤推荐算法 │ │ │ │ 训练集 (60%) → 校验集 (20%) → 测试集 (20%) │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 数据存储层 │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ HDFS 存储 │ │ MySQL 存储 │ │ │ │ /input_spark │ │ movierecommend │ │ │ │ - ratings.dat │ │ - movieinfo │ │ │ │ - movies.dat │ │ - user │ │ │ └──────────────────┘ │ - personalratings│ │ │ │ - recommendresult│ │ │ └──────────────────┘ │ └─────────────────────────────────────────────────────────────────┘数据集说明本项目采用 MovieLens 电影评分数据集数据集记录数格式ratings.dat878,415 条用户ID::电影ID::评分::时间戳movies.dat3,423 部电影ID::电影名称::电影类型personalRatings.dat用户自评分用于冷启动推荐MySQL 中的movieinfo表扩充了 50,581 部电影的元数据导演、主演、海报、简介、评分人数等。ETL 流程使用 ETL 脚本完成数据清洗与 HDFS 导入数据清洗去除空行、非法行与重复行校验列数与 ID 合法性上传 HDFS将清洗后的数据上传到/input_spark目录验证使用 HDFS Shell 命令验证数据完整性# ETL 脚本执行./etl/etl_to_hdfs.sh# HDFS 数据验证hdfs dfs-ls/input_spark hdfs dfs-cat/input_spark/ratings.dat|head-5Spark ALS 推荐算法算法原理ALSAlternating Least Squares交替最小二乘法是一种协同过滤推荐算法通过矩阵分解将用户-物品评分矩阵分解为用户特征矩阵和物品特征矩阵的乘积。核心代码objectMovieLensALS{defmain(args:Array[String]):Unit{// 读取 HDFS 数据valratingssc.textFile(hdfs://localhost:9000/input_spark/ratings.dat)// 数据切分训练集(60%) 校验集(20%) 测试集(20%)valArray(train,validation,test)ratings.randomSplit(Array(0.6,0.2,0.2))// ALS 模型训练valmodelALS.train(training,rank,numIter,lambda)// 模型评估 (RMSE)valrmsecomputeRmse(model,validation)// 生成 Top-N 推荐valrecommendationsmodel.recommendProducts(userId,10)// 写入 MySQLsaveToMySQL(recommendations)}}提交运行spark-submit--classrecommend.MovieLensALS\~/bigdata/workspace/spark-recommend/Spark_Recommend.jar\hdfs://localhost:9000/input_spark1100.110参数说明数据目录hdfs://localhost:9000/input_spark用户 ID1隐语义因子个数 rank10正则化参数 lambda0.1迭代次数 numIter10模型评估结果指标值训练集528,926 条校验集174,715 条测试集174,777 条校验集 RMSE0.8834测试集 RMSE0.8819Web 服务设计路由设计路由功能/首页 - 系统概览与使用引导/login登录页/registerpage注册页/recommendtest评分测试页/recommend推荐结果页/search电影库浏览/movie/:id电影详情页/myratings我的评分/tijiao提交评分异步触发 Spark/processing作业进度页数据库设计-- movierecommend 数据库CREATEDATABASEmovierecommend;-- 电影信息表CREATETABLEmovieinfo(idINTPRIMARYKEY,titleVARCHAR(255),genresVARCHAR(255),directorVARCHAR(255),actorsTEXT,posterVARCHAR(500),overviewTEXT,vote_countINT);-- 用户表CREATETABLEuser(idINTPRIMARYKEY,usernameVARCHAR(50),passwordVARCHAR(50));-- 用户评分表CREATETABLEpersonalratings(user_idINT,movie_idINT,ratingFLOAT,timestampBIGINT);-- 推荐结果表CREATETABLErecommendresult(user_idINT,movie_idINT,predictionFLOAT,titleVARCHAR(255));快速开始1. 启动服务# 一键启动 HDFS 和 MySQL./scripts/start_services.sh# 启动 Web 服务nodewebapp/myapp.js2. 访问系统首页http://localhost:3000测试账号test / 1233. 使用流程注册并登录系统在评分测试页对电影进行评分系统异步触发 Spark ALS 推荐作业查看推荐结果页获取个性化推荐问题与解决方案问题解决方案Kettle 6.1 官方下载渠道变更改用等效 ETL 脚本软件版本过老调整为 Hadoop 3.3.6、Spark 3.5.9 等lambda 参数过大导致模型退化经校验集对比选择 lambda0.1跨域图片拦截服务端同源图片代理Spark 作业耗时长异步提交 进度页轮询实验总结本实验完成了基于大数据的电影推荐系统全流程数据存储MovieLens 数据集经 ETL 清洗后导入 HDFS数据分析使用 Scala 编写 Spark ALS 协同过滤程序测试集 RMSE 达到 0.8819结果可视化通过 Node.js 网页完成注册、登录、评分、推荐展示等完整功能通过本次综合实战系统地掌握了 Linux 环境下大数据组件的部署、HDFS 数据管理、Spark MLlib 协同过滤推荐算法、MySQL 数据存储以及 Node.js 动态网页开发。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询