zoukankan      html  css  js  c++  java
  • MongoDB,HDFS, Spark to 电影推荐

    http://www.infoq.com/cn/news/2014/12/mongdb-spark-movie-recommend

    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
    

    功能实现之后的推荐系统中,“您可能喜欢的影片”一栏,那些根据预测推荐的影片是基于用户正在浏览的影片的第一个所属类别。例如影片《非常嫌疑犯》,第一类别为“犯罪”,则浏览该片时所推荐的电影也都属于这一类别。当用户表现出需求时,系统就会自动为用户过滤类别,再将筛选出来的结果进入给用户的推荐广播之中。


  • 相关阅读:
    超详细动画彻底掌握深度优先,广度优先遍历!
    拜托,别再问我什么是 B+ 树了
    高性能短链设计
    Gradle build 太慢,可能是你使用的姿势不对
    看完这些,你也能成技术专家
    x58平台 服务器电源配置 tdp
    系统掉盘,机械硬盘掉盘,固态掉盘
    centos7 修改ip和dns
    centos 修改hostname
    TCP三次握手和四次挥手过程
  • 原文地址:https://www.cnblogs.com/feika/p/4466802.html
Copyright © 2011-2022 走看看