写点什么

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

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

关注

评论

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

软件架构设计原则之开闭原则

Tom弹架构

Java 架构 设计模式 设计原则

软件架构设计原则之迪米特法则

Tom弹架构

Java 架构 设计模式 设计原则

学生管理系统架构设计

天天向上

架构实战营

架构实战营总结

gawaine

架构实战营

指标统计:基于流计算 Oceanus(Flink) 实现实时 UVPV 统计

腾讯云大数据

大数据 流计算 Oceanus

这样学BAT必面之软件设计原则,还不会就是我的问题

Tom弹架构

Java 架构 面试 设计模式 设计原则

模块一作业

hhh

「架构实战营」

模块六作业

potti

模块一作业

zjluoyue

软件架构设计原则之单一职责原则

Tom弹架构

Java 架构 设计模式 设计原则

Spring版本命名规则

Tom弹架构

Java spring 架构

架构实战训练营模块一

人生就是梦

架构实战营

软件架构设计原则之依赖倒置原则

Tom弹架构

Java 架构 设计模式 设计原则

10分钟搞懂事件驱动API

俞凡

架构 API

Vue进阶(幺肆玖):template 标签

No Silver Bullet

Vue 模板 占位符 10月月更

电商系统微服务拆分

michael

架构实战营

web安全:mysql提权总结篇

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

ZK(ZooKeeper)分布式锁实现

牧小农

zookeeper ZooKeeper原理 zookeeper分布式锁

电商微服务拆分

白开水又一杯

#架构实战营

软件架构设计原则之合成复用原则

Tom弹架构

Java 架构 设计模式 设计原则

【架构实战营作业】模块六——创业公司电商微服务架构

聆息

什么是架构

天天向上

架构实战营

架构实战营-第三期-模块一作业

岚哲

极客时间 架构 架构实战营

软件架构设计原则之接口隔离原则

Tom弹架构

Java 架构 设计模式 设计原则

软件架构设计原则之里氏替换原则

Tom弹架构

Java 架构 设计模式 设计原则

随便谈一下kafka消息队列

Regan Yue

kafka 10月月更

模块6作业

4anonymous

拆分电商系统为微服务

缘分呐

微服务 电商系统

学生管理系统

Mars

架构实战营 模块一

HMS的舞者们,在智能世界的舞台

脑极体

架构实战营 拆分电商系统为微服务

💤 ZZzz💤

架构实战营

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