2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

Ceph集群详细部署配置图文讲解(二)

Lansonli

云原生 私有云 Ceph 云存储 7月月更

【都 Java17 了,还不了解 Java 8 ? 】一文带你深入了解 Java 8 新特性

猫的树

java8

【Java 基础你一定要掌握的知识点】Java异常处理和设计

猫的树

Java 异常处理

《看完就懂系列》答应我,看完就开始用Symbol好吗?

南极一块修炼千年的大冰块

7月月更

NFT数字藏品交易平台APP开发搭建

开发微hkkf5566

【C语言】进阶指针six

謓泽

7月月更

三证加持,澳鹏中国又获ISO9001及27701认证

澳鹏Appen

隐私保护 ISO 数据安全 质量检测

web前端培训nodejs异步IO

@零度

node.js 前端开发

【Docker 那些事儿】关于容器底层技术的奥秘

Albert Edison

7月月更

亚信科技发布“电信级”核心交易数据库AntDB7.0,助力政企“信”创未来!

亚信AntDB数据库

AntDB 国产数据库 产品发布会

LP单双币质押流动性挖矿系统开发

开发微hkkf5566

开源仓库贡献 —— 提交 PR

攻城狮杰森

git GitHub PR 开源贡献 7月月更

无声的AI:昇腾AI如何用大模型破解手语学习的难题?

脑极体

TCP/IP协议常见漏洞类型

郑州埃文科技

TCP/IP 漏洞 IP地址

Windows下Tomcat内存占用过高问题跟踪(jmap 的使用)

源字节1号

软件开发 小程序开发

太奇葩了!Keepalived突发高可用事故

Java全栈架构师

Java 程序员 面试 程序人生 Keepalived

Taro2/3做小程序开发的使用心得和方法

9527

小程序 taro

Ceph Swift Api 配置与使用(三)

Lansonli

云原生 Ceph 云存储 7月月更

let、var、const 的区别

7月月更

Go 原生插件使用问题全解析

SOFAStack

Go 语言 开源软件 MOSN 问题解析 开源学习

一道2016年nice的笔试题引发的思考

芒果酱

7月月更

跟着官方文档学 Python 之:函数

甜甜的白桃

Python 递归 函数 参数 7月月更

答应我忘掉Postman吧,Apifox才是yyds!

程序员小毕

Java 程序员 程序人生 后端 开发工具

Github发布6天,Star55K+,这套笔记足够你拿下90%的Java面试

冉然学Java

java面试 #Github

leetcode 135. Candy 分发糖果(困难)

okokabcd

LeetCode 贪心算法 算法与数据结构

数据分析引擎百花齐放,为什么要大力投入ClickHouse?

字节跳动数据平台

龙蜥下游发行版 Alinux 和 UOS 成为 OpenSCAP 官方首批支持的国内 OS

OpenAnolis小助手

国产 龙蜥操作系统 UOS v20 OpenSCAP Alinux 2/3

全国首创!洞见科技联合山东数据制定的「数据产品登记」两项标准正式发布

洞见科技

数据 联邦学习 隐私计算

大数据培训Hive的数据存储与压缩

@零度

hive 大数据开发

【Java 实战】实现大转盘抽奖

猫的树

Java 大转盘抽奖

nacos注册中心之客户端服务注册

急需上岸的小谢

7月月更

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