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

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

关注

评论

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

MES系统详细介绍

万界星空科技

MES系统

软件测试/测试开发丨Python Debug 调试与分析

测试人

Python 程序员 debug 软件测试 测试开发

数智化时代,企业如何深度推进业财融合?

用友BIP

业财融合 2023全球商业创新大会

Python从0到1丨详解图像锐化的Sobel、Laplacian算子

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号9月PK榜

交易所开发中心化交易所与去中心化交易所

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 交易所源码 NFT开发

软件测试|缺陷的生命周期是怎么样的

霍格沃兹测试开发学社

软件测试|Flask操作数据库-一对多

霍格沃兹测试开发学社

软件测试|Vue常用指令-条件渲染(v-if)

霍格沃兹测试开发学社

自动创作新内容的人工智能

百度开发者中心

人工智能 数据可视化 生成式AI 文心一言

聊聊GaussDB AP是如何执行SQL的

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号9月PK榜

ClickHouse 存算分离改造:小红书自研云原生数据仓库实践

小红书技术REDtech

数据仓库 云原生 OLAP Clickhouse 存算分离

新华网专访王文京:向全球前三的企业数智化平台迈进

用友BIP

2023全球商业创新大会

企业大数据平台建设七大场景,看这本指南就够了

极客天地

酷克数据推出AI开发工具箱HashML 加速企业级AI应用落地投产

酷克数据HashData

软件测试|测试平台开发Flask操作数据库-ORM

霍格沃兹测试开发学社

公链开发联盟链开发区块链浏览器开发钱包开发

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 公链开发

软件测试|测试平台后端开发Flask操作数据库-数据CRUD(增删改查)

霍格沃兹测试开发学社

如何加快跨国传输大文件的速度?

镭速

跨国传输大文件

自动化性能测试的理解误区

老张

性能测试 自动化测试 性能基线

一切为了开发者,9月16日,重大信息即将发布,敬请期待

LAVAL社区小助手

软件测试|测试平台后端开发Flask操作数据库-多对多

霍格沃兹测试开发学社

js 高精度计算 - decimal.js 库

程序员海军

JavaScript 精度 高精度计算

如何解决基因行业海量数据传输难题?镭速传输给出答案

镭速

大数据传输

软件测试|测试平台后端开发Flask框架-集成Swagger文档

霍格沃兹测试开发学社

DAPP开发与经济模型设计

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 交易所源码 NFT开发

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