写点什么

用 MongoDB 和 Spark 实现电影推荐

  • 2014-12-23
  • 本文字数:980 字

    阅读完需:约 3 分钟

MovieWeb 是一个电影相关的网站,它提供的功能包括搜索电影信息、排名或者电影明星资料等。它拥有 10000 部电影的信息,70000 个用户,和超过 1 千万的电影评分。借用它的搜索目录,用户可以通过类型分类、排名和片名浏览等方式检索电影。但如何解决电影智能推荐的问题呢?近日 MongoDB 分享了他们结合 Hadoop 的经验

MovieWeb 基于 Python。在构建电影推荐系统时,使用 flask 和 PyMongo 读取数据,应用 Python 网页应用浏览电影和评分推荐;使用 Spark 应用来运算处理实际的推荐,并用 MLLib 实现协同过滤;然后搜集电影评分的数据,并创建和训练数据模型,而后处理用户和电影的数据集,再反向应用训练过的模型来尝试预测电影排名。以上完成后,将预测结果写入 MongoDB,接下来那些网页应用就可以将预测的排名展示出来,再收取新一轮的预测。其中用到的工具有 Apache Hadoop 2.3.0(HDFS 和 YARN),Spark1.0 和用于管理数据的 MongoDB。

MovieWeb 的工作流程:

以 BSON 的格式快速建立数据库;在 HDFS 中储存该 BSON;将 BSON 读取到 Spark 应用中;用已有的排名评分训练模型;建立“用户—影片”对;为所有“用户—影片”对预测排名;将预测结果写入 MongoDB 采集库;网页应用展示推荐;每周重复一次以上工作。这不是一项 MapReduce 的工作,其代码量很少,加上引入语法基本上也只需要 150 行左右的代码。

Spark 的环境建立和架构建立的执行语句如下:

复制代码
$ export SPARK_JAR=spark-assembly-1.0.0-hadoop2.3.0.jar
$ Export HADOOP_CONF_DIR=/usr/local/Hadoop/etc/Hadoop
$ bin/spark-submit
--master yarn-cluster
--class com.mongodb.hadoop.demo.Recommender demo-1.0.jar
--jars mongo-java-2.12.2.jar,mongo-hadoop-1.2.1.jar
--driver-memory 1G
--executor-memory 2G
--num-executors 4

功能实现之后的推荐系统中,“您可能喜欢的影片”一栏,那些根据预测推荐的影片是基于用户正在浏览的影片的第一个所属类别。例如影片《非常嫌疑犯》,第一类别为“犯罪”,则浏览该片时所推荐的电影也都属于这一类别。当用户表现出需求时,系统就会自动为用户过滤类别,再将筛选出来的结果进入给用户的推荐广播之中。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-12-23 00:457320
用户头像

发布了 268 篇内容, 共 137.8 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

面试官问:你知道 C# 单例模式有哪几种常用的实现方式?

追逐时光者

C# .net 微软

C# 13 中的新增功能实操

追逐时光者

C# .net 微软

在 ASP.NET Core 中创建中间件的 4 种方式

追逐时光者

C# .net 微软

单线程如何撑起百万连接?I/O多路复用:现代网络架构的基石

poemyang

RPC IO多路复用

排查 EF 保存数据时提示:Validation failed for one or more entities 的问题

追逐时光者

.net ef

C# 中比较实用的关键字,基础高频面试题!

追逐时光者

C# .net 微软

一个开源且免费的 .NET CMS 和应用程序框架

追逐时光者

.net CMS

时序数据库 Apache IoTDB 等你“打卡”!2025 OSCAR 开源产业大会完整版议程揭晓

Apache IoTDB

全面的 .NET 操作 SQLite 入门实战(包含选型、开发、发布、部署)!

追逐时光者

C# sqlite .net 微软

重磅 | Cloud Ace 宣布正式代理云安全平台 Wiz !

Cloud Ace 云一

云安全 谷歌云 企业云服务 Wiz

百分点科技发布中国首个AI原生GEO产品Generforce,助力品牌决胜AI搜索新时代

百分点科技技术团队

在 Blazor 中使用 Chart.js 快速创建数据可视化图表

追逐时光者

C# .net 微软

企业应用开发中.NET ORM EF常用哪种模式?

追逐时光者

C# .net ORM

.NET 10首个预览版发布:重大改进与新特性概览!

追逐时光者

.net 微软

Plotly.NET 一个为 .NET 打造的强大开源交互式图表库

追逐时光者

C# .net

朴智平台“上新”:金融风控模型对抗时代到来

极客天地

2025 年全面且实用的 Visual Studio 插件推荐,开发效率提升利器!

追逐时光者

微软 Visual Studio

浅谈 C# 13 中的 params 集合

追逐时光者

C# .net 微软

Figma MCP如何配置?MCP+Cursor实战教程分享!

职场工具箱

产品设计 figma AIGC ui设计 MCP

Sppring集成Quartz简单案例详解 包括(添加、停止、恢复、删除任务、获取下次执行时间等)

刘大猫

人工智能 云计算 算法 物联网 大模型

C#之 Dictionary 详解

追逐时光者

C# .net

看图猜成语达人小程序:一站式趣味与变现解决方案

微擎应用市场

搞定低代码视图只需 2 步!接口参数 + 列表展示,新手也能会

引迈信息

Nginx Tracing 最佳实践

观测云

nginx

一个基于 .NET 开源免费的异地组网和内网穿透工具

追逐时光者

.net 微软

一款基于 .NET 开源、配置灵活的工作流引擎

追逐时光者

C# .net 微软

工作面试必备:SQL 中的各种连接 JOIN 的区别总结

追逐时光者

数据库 sql

深度剖析:KWDB SQL 编译与优化策略

KaiwuDB

数据库 sql KaiwuDB 分布式多模数据库 KWDB开源数据库

我的公众号接入了DeepSeek-R1模型,成为了一个会深度思考的强大.NET AI智能体!

追逐时光者

AI

设备点检 设备维护经验总结(9)

万里无云万里天

工业 工厂运维 设备点检

用MongoDB和Spark实现电影推荐_语言 & 开发_张天雷_InfoQ精选文章