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 joi