后我有一个RDD P映射到类:火花:TOPN的GroupBy
case class MyRating(userId:Int, itemId:Int, rating:Double)
我对寻找为每个用户即的GroupBy 用户id并且每个形成的组内TOPN条目,滤出TopN(例如10)条目基于最高评分。
我做了以下内容:
val A : RDD[((Int), Iterable[MyRating])] = P.keyBy(r => (r.userId)).groupByKey
val B : RDD[((Int), List[MyRating])] = key.mapValues(iter => iter.toList.sortBy(_.rating, false))
val C = values.groupByKey.take(10)
显然应用。取(10)groupByKey离开后,只有10个键(用户),我并不会筛选出每个用户的TOP10评级。
我们如何去应用.take(N)后面的groupBy,以便它作用于某个部分的值而不是key本身?
谢谢,aggregateByKey更有意义..看起来像一个强大的构造。 – srbhkmr