写点什么

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

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

关注

评论

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

QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考

艾小仙

架构 编程语言

数字货币交易所技术开发,交易所源码

13530558032

TCP和HTTP中的KeepAlive机制总结

陈德伟

nginx TCP 性能 网络 HTTP

本以为自己MySQL够牛逼了,直到亲自去阿里受虐了一次!

Java架构师迁哥

Java程序员博客系统推荐!我调研了100来个 Java 开源博客系统,发现这 5 个最好用!

Java 项目管理 计算机 框架设计

未来已来!全球一流科技盛会——云栖大会9月17日线上隆重举办

北柯

易观方舟Argo+CRM | 让企业数据发挥更大价值

易观大数据

大作业 一

Jaye

LeetCode题解:622. 设计循环队列,使用双向链表,JavaScript,详细注释

Lee Chen

大前端 LeetCode

数字资产钱包开发方案,区块链数字钱包软件源码

13530558032

Java-技术专题-AQS和Volatile和Synchronized实现原理

码界西柚

DDD+微服务实战:什么是DDD?

AI代笔

微服务 领域驱动设计 DDD

架构师训练营第 1 期-第一周命题作业

arthur

区块链技术智能合约有哪些实际的应用场景

CECBC

智能合约 区块链技术

架构师训练营第一周作业

邓昀垚

架构师训练营第一周学习总结

邓昀垚

极客大学架构师训练营

Java-技术专题-JMX超详细解读

码界西柚

面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

小林coding

乐观锁 高并发 操作系统 计算机基础

华为HMS的“生态雪球”,滚动在万物智联的新跑道

脑极体

架构大作业

赵龙

架构师训练营1期 -- 第一周作业

曾彪彪

极客大学架构师训练营

天猫成立房产部门,利用区块链承载交易多项服务功能

CECBC

区块链 房地产

银行数仓体系发展之路

易观大数据

甲方日常 17

句子

生活 随笔杂谈

What’s New in Dubbo-go-hessian2 v1.7.0

apache/dubbo-go

服务端 dubbo-go Go 语言

一文详解分布式缓存(附代码)

架构师修行之路

缓存 分布式 分布式缓存

Java异常面试题(2020最新版)

Java架构师迁哥

区块链支付系统开发技术方案,USDT支付系统搭建

13530558032

数字经济时代来临 区块链护航数字资产安全

CECBC

金融 数字时代

Spring Boot CLI 介绍

hungxy

Spring Boot Spring Boot CLI

Week15

一叶知秋

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