我是apache-spark和scala的新手,如果这是一个小问题,我深表歉意。
我正在尝试建立一个推荐系统,并具有形式(用户,产品,预测等级)的RDD。
我要实现的目标:
按用户分组,我想要一个产品列表(按等级从高到低排序),并基于该列表(针对每个用户)为预测分配等级。谁能告诉我我将如何实现这一目标?
下面的代码显然不起作用,但这就是我想要达到的目的
val xyz = ratesAndPreds.map{case ((user,product),(r1,r2)) => (user,product,r2)}
val def = xyz.sortBy(_._3)
val abc = abc.groupByKey()
任何帮助将不胜感激。
这应该够了吧:
val groupedByUser = xyz.groupBy(_._1)
val sortedProductsByUser = groupedByUser mapValues { triples =>
// this is done for every user, for its list of (user, product, rating)
// (yes, user is thus the same for all the elements of triples here)
val sortedTriples = triples.sortBy(_._3) // assuming rating has an Ordering, e.g., it's an Int
val keepOnlyProducts = sortedTriples.map(_._2)
keepOnlyProducts
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句