3
最近我被問到(在課堂作業中)是否可以找到RDD內出現的前10個詞。我提交了一份工作解決方案,看起來像用於元組RDD的SortByValue
wordsRdd
.map(x => (x, 1))
.reduceByKey(_ + _)
.map(case (x, y) => (y, x))
.sortByKey(false)
.map(case (x, y) => (y, x))
.take(10)
所以基本上,我交換元組,按鍵排序,然後再次交換。然後終於拿到10.我沒有發現重複交換非常優雅。
所以我不知道是否有一個更優雅的方式來做到這一點。
我搜查,發現使用Scala的implicits
到RDD轉換爲斯卡拉序列,然後做sortByValue
一些人,但我不想RDD轉換爲斯卡拉Seq
,因爲這將殺死的分佈式特性RDD。
那麼還有更好的方法嗎?
「最近有人問我找到頂級的10中發生內部RDD話」是啊,沒錯,「賦值爲我的課程問......「也許? –
是的。這是一項任務。我完成了它,結果如上所示。我不是要求任何人完成任務。我正在問如何改進已被接受爲有效且正確的答案。但我覺得可以有更好的辦法。 –
好的。值得說的是,或者你看起來像是在尋找SO來回答你的任務 –