後我有一個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