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

第四部分-推荐系统-离线推荐

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

说明几点

1.主要分为两个模块。其一是为 单个随机用户 做推荐,其二是为 所有用户做推荐,并将推荐结果进行保存
2. 其中所有推荐的结果保存在 MySQL中,HBase,Hive中 <三种版本>。
3. 其中取得的userid一定要存在于模型中, 这样就建议直接从trainingData中取。

1.为某一用户产生推荐结果

开始模块一Coding

步骤一: 继续在前面的项目中,新建config包,新建AppConf接口
为了代码不要那么冗余,我们抽离一个接口出来

package com.csylh.recommend.config

import java.util.Properties

import org.apache.spark.sql.SparkSession

/**
  * Description: 后续ETL操作或者其他操作必须要实现的trait
  *
  * @Author: 留歌36
  * @Date: 2019-07-17 16:53
  */
trait AppConf {
   
  val localMasterURL = "local[2]"
  val clusterMasterURL = "spark://hadoop001:7077"

  // 面向SparkSession编程
  val spark = SparkSession.builder()
    //    .master(localMasterURL)
    .enableHiveSupport() //开启访问Hive数据, 要将hive-site.xml等文件放入Spark的conf路径
    .getOrCreate()

  val sc = spark.sparkContext

  // 设置RDD的partitions 的数量一般以集群分配给应用的CPU核数的整数倍为宜, 4核8G ,设置为8就可以
  // 问题一:为什么设置为CPU核心数的整数倍?
  // 问题二:数据倾斜,拿到数据大的partitions的处理,会消耗大量的时间,因此做数据预处理的时候,需要考量会不会发生数据倾斜
  val minPartitions = 8

  //  在生产环境中一定要注意设置spark.sql.shuffle.partitions,默认是200,及需要配置分区的数量
  val shuffleMinPartitions = "8"
  spark.sqlContext.setConf("spark.sql.shuffle.partitions",shuffleMinPartitions)


  //jdbc连接
  val jdbcURL = "jdbc:mysql://hadoop001:3306/recommend?useUnicode=true&characterEncoding=UTF-8&useSSL=false"

  val alsTable = "recommend.alsTab"
  val recResultTable = "recommend.similarTab"
  val top5Table = "recommend.top5Result"
  val userTable= "recommend.user"
  val ratingTable= "recommend.rating"

  val mysqlusername = "root"
  val mysqlpassword = "123456"

  val prop = new Properties
  prop.put("driver", "com.mysql.jdbc.Driver")
  prop.put("user", mysqlusername)
  prop.put("password", mysqlpassword)

}

步骤二: 新建Recommender

package com.csylh.recommend.ml

import com
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
基于Spark电影推荐系统是使用Spark框架来构建和训练的推荐系统,它可以根据用户的历史行为和电影的属性,为用户推荐可能感兴趣的电影。下面是一个简单的步骤来构建基于Spark电影推荐系统: 1. 数据准备:收集电影数据集,包括用户行为数据和电影属性数据。用户行为数据可以包括用户对电影的评分、观看历史、收藏等信息,电影属性数据可以包括电影的类型、导演、演员等信息。 2. 数据预处理:使用Spark的DataFrame API加载和处理数据。对于用户行为数据,可以进行数据清洗、去重、转换等操作;对于电影属性数据,可以进行特征提取、编码等操作。 3. 特征工程:将用户行为数据和电影属性数据转换为特征向量。可以使用特征提取方法如TF-IDF、Word2Vec等,将电影和用户表示为稠密向量。 4. 模型训练:使用Spark的机器学习库(如MLlib)训练推荐模型。常用的推荐模型包括协同过滤、基于内容的推荐、矩阵分解等。可以使用交叉验证和超参数调优来选择最佳模型。 5. 推荐生成:使用训练好的模型对新用户进行推荐。可以根据用户的特征向量和电影的特征向量计算用户与电影之间的相似度,并为用户推荐相似度高的电影。 6. 评估和优化:通过离线评估指标(如准确率、召回率等)来评估推荐系统的性能,并进行优化。可以尝试不同的模型算法、特征工程方法和参数设置来提高推荐效果。 请注意,以上只是一个基本的框架,实际构建电影推荐系统还需要根据具体需求和数据进行调整和优化。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值