首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有排序的情况下,在火花中得到最频繁的单词?

如何在没有排序的情况下,在火花中得到最频繁的单词?
EN

Stack Overflow用户
提问于 2015-03-27 21:45:06
回答 1查看 4K关注 0票数 2

在星星之火中,我们可以很容易地使用map约简来计算单词的出现时间,并使用排序来获得最频繁的单词,

代码语言:javascript
复制
// Sort locally inside node, keep only top-k results,
// no network communication

val partialTopK = wordCount.mapPartitions(it => {
    val a = it.toArray
    a.sortBy(-_._2).take(10).iterator
}, true)


// Collect local top-k results, faster than the naive solution

val collectedTopK = partialTopK.collect
collectedTopK.size


// Compute global top-k at master,
// no communication, everything done on the master node

val topK = collectedTopK.sortBy(-_._2).take(10)

但我想知道是否有一个更好的解决方案,完全避免排序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-27 22:02:38

我想你想要takeOrdered

返回由指定的隐式OrderingT定义的该RDD中的第一个k(最小)元素,并保持排序。

top

返回由指定的隐式OrderingT定义的这个RDD的顶部k(最大)元素。

还有几个这样的问题/答案似乎至少也有部分重复。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29310687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档