AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

[译文]设计模式01 – 抽象工厂模式(附代码实例)

YoungZY

设计模式 译文

JVM真香系列:堆内存详解

田维常

Java JVM 堆栈 虚拟机

携oneAPI Gold版本和服务器GPU 英特尔领先业界进入XPU时代

E科讯

堪称完美!11月华为官方首发Spring响应式微服务,Spring+SpringBoot+SpringCloud三管齐下

Java架构追梦

Java 架构 微服务 springboot SpringCloud

详解快速开发平台与工作流通用组件的设计规范

Marilyn

敏捷开发 企业应用

当代程序员必备技能(算法)之:递归详解

Java架构师迁哥

快速了解阿里微服务热门开源分布式事务框架——Seata

比伯

Java 架构 微服务 seata

Linux一切皆文件,如果你没做到这一步,那这就是句话而已

小Q

Java Linux 学习 架构 面试

氪信团队再夺冠!易观数科第四届OLAP算法大赛前三甲诞生!

易观大数据

数据库 算法 OLAP

十年资深架构师分享:如果这么做还收不到一线互联网大厂面试,请来找我。

Java架构师迁哥

apipost如何设置断言

测试人生路

接口测试

奈学教育荣获“中关村高新技术企业”认证

古月木易

教育 IT

阿里P8整理出SQL笔记:收获不止SOL优化抓住SQL的本质

Java~~~

MySQL 阿里 sql查询 SQL优化 SQL光标

与第三方系统打通的N种进阶方式

棒锤🐮

架构

【涂鸦物联网足迹】涂鸦云平台接口列表—万能红外遥控器

IoT云工坊

人工智能 云计算 物联网 API 红外遥控器

堪称完美!11月华为首发Spring响应式微服务,三管齐下

小Q

Java spring 学习 架构 面试

我终于拥有自己的独立博客了。

彭宏豪95

GitHub 写作 博客 IT

奈学教育荣获“中关村高新技术企业”认证

奈学教育

奈学教育

深入浅出node中间件原理

徐小夕

Java node.js 大前端 中间件 数据可视化

三部门联合发言不得虚报直播销售额业绩:双十一何以刺激了用户的购买欲

石头IT视角

薇娅和李佳琦带货百亿奇迹背后是这些技术团队的努力

阿里云CloudImagine

《分布式Java应用基础与实践》.pdf

田维常

分布式 电子书

双十一背后的技术

anyRTC开发者

大数据 AI 音视频 WebRTC RTC

CloudQuery v1.2.1 版本发布

BinTools图尔兹

数据库 开发者 运维 工具 开发工具

从应用开发角度认识K8S

LorraineLiu

容器 云原生 k8s入门

护航11.11,如何筑牢安全防御系统?

京东科技开发者

云计算 云安全 DDoS

2020双11:看阿里背后的黑科技!

人工智能 云计算 大数据 运维 黑科技

【活动回顾】Flutter实时音视频应用场景实践

ZEGO即构

flutter RTC

深入解析 Flink 的算子链机制

Apache Flink

flink 流计算

实时音视频面视必备:快速掌握11个视频技术相关的基础概念

JackJiang

音视频 即时通讯 视频

第八周作业

Geek_4c1353

极客大学架构师训练营

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