基于Spark的电影推荐系统(推荐系统~7)

本文介绍了如何基于Spark和Kafka构建实时推荐系统,详细阐述了从数据处理到模型应用的步骤,包括处理可能的新用户数据,使用SparkStreaming进行实时流处理,并通过shell脚本执行推荐代码。
摘要由CSDN通过智能技术生成

第四部分-推荐系统-实时推荐

  • 本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影。

说明几点

1.数据来源是 testData 测试集的数据。这里面的用户,可能存在于训练集中,也可能是新用户。因此,这里要做处理。
2. SparkStreaming + kakfa
在这里插入图片描述

开始Coding

步骤一:在streaming 包下,新建PopularMovies2


package com.csylh.recommend.streaming

import com.csylh.recommend.config.AppConf
import org.apache.spark.sql.SaveMode

/**
  * Description: 个性化推荐
  *
  * @Author: 留歌36
  * @Date: 2019/10/18 17:42
  */
object PopularMovies2 extends AppConf{
   
    def main(args: Array[String]): Unit = {
   
        val movieRatingCount = spark.sql("select count(*) c, movieid from trainingdata group by movieid order by c")
        // 前5部进行推荐
        val Top5Movies = movieRatingCount.limit(5)

        Top5Movies.registerTempTable("top5")

        val top5DF = spark.sql("select a.title from movies a join top5 b on a.movieid=b.movieid")

        // 把数据写入到HDFS上
        top5DF.write.mode(SaveMode.Overwrite).parquet("/tmp/top5DF")

        // 将数据从HDFS加载到Hive数据仓库中去
        spark.sql("drop table if exists top5DF")
        spark.sql("create table if not exists top5DF(title string) stored as parquet")
        spark.sql("load data inpath '/tmp/top5DF' overwrite into table top5DF")

        // 最终表里应该是5部推荐电影的名称
    }
}


步骤二:在streaming 包下,新建SparkDirectStreamApp

package com.csylh.recommend.streaming

import com.csylh.recommend.config.AppConf
import kafka.serial
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值