写点什么

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

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

关注

评论

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

Kubernetes大二层网络:挑战与解决方案探索

GousterCloud

cni #k8s

思考-使用JSON结构映射业务数据与数据库表结构

alexgaoyh

json 数据库 系统设计 映射

人工智能,应该如何测试?(四)模型全生命周期流程与测试图

霍格沃兹测试开发学社

【荣誉】第七在线出席ToB商业头条行业大会 斩获创新力产品奖

第七在线

人工智能,应该如何测试?(八)企业级智能客服测试大模型 RAG

霍格沃兹测试开发学社

教你如何使用Zig实现Cmpp协议

华为云开发者联盟

云计算 华为云 华为云开发者联盟 华为云短信服务 企业号2024年4月PK榜

我们是如何测试人工智能的(四):模型全生命周期流程与测试图

测试人

人工智能 软件测试

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v9.0版已发布

JackJiang

网络编程 即时通讯 IM

人工智能,应该如何测试?(三)数据构造与性能测试篇

霍格沃兹测试开发学社

阿里巴巴中国站按关键字搜索商品 API接口使用指南:快速获取商品ID、名称、描述、价格

技术冰糖葫芦

API Explorer API 文档

2024年LED显示屏租赁屏市场

Dylan

商业 LED显示屏 全彩LED显示屏 led显示屏厂家 舞台表演

行云防水堡-打造企业数据安全新防线

行云管家

网络安全 数据安全 防水堡

人工智能,应该如何测试?(七)大模型客服系统测试

霍格沃兹测试开发学社

VMware ESXi 8.0U2b macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi 驱动 网卡 BIOS unlocker

OpenAI Sora:60s超长长度、超强语义理解、世界模型。浅析文生视频模型Sora以及技术原理简介

蓉蓉

openai GPT-4 人工智

广州等级保护测评公司一览表2024

行云管家

等保 堡垒机 等级保护 等保测评

BSN-DID研究--主题二:发证方函数

BSN研习社

区块链 BSN did

效率提升 80%:go-mongox 让复杂的 BSON 数据编写变得简单

陈明勇

Go 开源 go mongo

LangChain初探:为你的AI应用之旅导航

蛋先生DX

#人工智能 LLM #LangChain Prompt 企业号2024年4月PK榜

支付系统概述(五):结算系统

agnostic

支付系统设计与实现

人工智能,应该如何测试?(六)推荐系统拆解

霍格沃兹测试开发学社

Sermant热插拔能力在故障注入场景的实践

华为云开发者联盟

开源 华为云 华为云开发者联盟 sermant 企业号2024年4月PK榜

VMware ESXi 8.0U2b macOS Unlocker & OEM BIOS 标准版和厂商定制版

sysin

esxi 驱动 unlocker dell hpe

人工智能,应该如何测试?(二)数据挖掘篇

霍格沃兹测试开发学社

云服务器干嘛的?带你掌握云计算的优势

一只扑棱蛾子

云服务器

做跨境电商,为什么要建独立站

Noah

@Transactional事务是真的好用吗

派大星

Spring事务 Java 面试题 互联网大厂面试

Overlay网络与Underlay网络:深入探索与全面对比

GousterCloud

网络 #Kubernetes#

去哪儿完成鸿蒙原生应用Beta版本开发,带来一站式在线旅行体验

最新动态

企业智能体(Agent)来袭!拥有“无限可能”的数智化AI底座

行云创新

AI 智能体 agent

提升团队工程交付能力,从“看见”工程活动和研发模式开始

阿里云云效

阿里云 云原生 云效

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