使用ALS的Spark建议

时间:2016-09-02 07:01:26

标签: apache-spark collaborative-filtering

所以我正在构建一个使用ALS包的推荐模型并通过笛卡尔积生成所有用户产品列表。我最终预测了所有评级。但我想按用户对评分进行分组。以及最终的格式(用户,(产品,评级)),我必须按降序排序。

这是我的代码

val ratings = sc.textFile(new File("/user/ubuntu/kang/0829/rawRatings.csv").toString).map { line =>
  val fields = line.split(",")
  (Rating(fields(0).toInt,fields(1).toInt,fields(2).toDouble))}
  val model = ALS.train(ratings,10,10,0.1)
   val numUsers = ratings.map(_.user).distinct
   val numMovies = ratings.map(_.product).distinct
   val usersProducts = numUsers.cartesian(numMovies)
   val recommendations = model.predict(usersProducts)

但是,此处的价值推荐不是配对RDD,而是评级(_)格式 所以我不能申请groupByKey ......

有人可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

这很简单:

recommendations.map (x => (x.user, (x.product, x.rating))).reduceByKey(here put reduce function)