【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

用 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:456677
用户头像

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

关注

评论

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

Web3 游戏:现状与未来

TinTinLand

区块链 科技 web3

五八同城(58.com)研发效能组织和团队建设之路

laofo

互联网 DevOps 研发效能 持续交付 工程效率

spring4.1.8扩展实战之七:控制bean(BeanPostProcessor接口)

程序员欣宸

Java spring SpringFramework 6月月更

Linux开发_Linux下进程编程

DS小龙哥

6月月更

测试需要做单元测试吗?

老张

软件测试 单元测试

关于 Angular SSR 应用在渲染中止时如何避免内存泄漏问题的一些尝试

Jerry Wang

typescript angular SSR Spartacus 6月月更

前端食堂技术周刊第 41 期:TC 39 会议、IE 退役、React Labs、Storybook 组件百科全书

童欧巴

前端 React IE TC39

别再说你不知道分布式事务了

牧小农

金融之外,区块链还适合什么场景?

TinTinLand

区块链+ 科技 web3

SeekTiger的崛起,旗下生态NFT、DAO VC平台将陆续上线

股市老人

手把手教你在CentOS环境安装Docker

迷彩

Docker 架构 运维 6月月更 InfoQ极客传媒15周年庆

创建视图——基于函数的视图 Django

海拥(haiyong.site)

Python django 6月月更

SDN系统方法 | 7. 叶棘网络

俞凡

架构 网络 sdn SDN系统方法

Docker进阶(一):docker -v目录挂载

No Silver Bullet

Docker 6月月更

BOM核心——window对象之Golbal

大熊G

JavaScript 前端 6月月更

算法系列之动态规划

坚果

6月月更

InfoQ 极客传媒15周年庆征文|云原生运维排障的关键要点

穿过生命散发芬芳

云原生 6月月更 InfoQ极客传媒15周年庆

办事利器推荐 | 社区征文

工程师日月

工具软件 6月月更 初夏征文

【前端】前后端交互重点Ajaxの介绍及实战

孤寒者

json ajax tornado 6月月更

Zookeeper入门基础

No Silver Bullet

zookeeper 6月月更

流计算中的死锁

Damon

6月月更

Mysql源码阅读 -- Windows10编译运行MySQL源码

c++ MySQL 源码学习

C#入门系列(十八) -- 类的属性、索引、事件和this关键字

陈言必行

C# 6月月更

如何构建、部署运行Flink程序

百思不得小赵

flink 部署 6月月更

颠覆Web2 社交媒体,Liberty 计划在波卡上找到了归宿

One Block Community

区块链 科技

走近分布式缓存Memcached

No Silver Bullet

memcached 分布式缓存 6月月更

NodeJS 读写文件 🎠

德育处主任

node.js 6月月更

远程办公三部曲 - 如何提高沟通效率| 社区征文

耳东@Erdong

沟通 远程办公 6月月更 初夏征文

模块四

Geek_2ce415

彻底搞懂 select/poll/epoll,就这篇了!

C++后台开发

网络编程 linux开发 epoll select C++开发

Feature Store Meetup V3回顾|华为商城&第四范式&众安保险特征平台建设实践

星策开源社区

华为商城 OpenMLDB Feature Store MLOps 特征工程

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