所以我正在构建一个使用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 ......
有人可以解决这个问题吗?
答案 0 :(得分:0)
这很简单:
recommendations.map (x => (x.user, (x.product, x.rating))).reduceByKey(here put reduce function)