1、Spark—基于物品的协同过滤推荐算法
1.1 离线计算—物品的相似度矩阵
输入数据格式:
用户ID,物品ID,评分
输出结果格式:
物品ID1,物品ID2,相似度
Spark程序代码如下:
// #0 设置输入输出
val inputpath = "hdfs://192.168.180.10:9000/user/input"
val outputpath = "hdfs://192.168.180.10:9000/user/output"
// #1 读取数据,从HDFS上
valuser_rdd1 = sc.textFile(inputpath, 5).union(sc.textFile(inputpath1, 5)).union(sc.textFile(inputpath2,5)).union(sc.textFile(inputpath3, 5))
// #2 数据分割
val user_rdd2 = user_rdd1.map(line => {
val fileds = line.split(",")
(fileds(0), fileds(1))
}).sortByKey()
user_rdd2.cache
// #3 (用户:物品) 笛卡尔积 (用户:物品)=> 物品:物品组合
val user_rdd3 = user_rdd2 join user_rdd2

该博客介绍了如何使用Spark进行基于物品的协同过滤推荐算法的离线计算和在线推荐。离线计算部分通过处理用户-物品评分数据,计算物品之间的相似度矩阵;在线计算部分则展示了实时推荐的实现,根据相似矩阵和用户评分表生成推荐列表。
最低0.47元/天 解锁文章
659





