首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache是如何实现其topK() API的?

Apache是如何实现其topK() API的?
EN

Stack Overflow用户
提问于 2015-07-31 11:38:08
回答 1查看 1.1K关注 0票数 4

在Apache中有一个 API,它可以从RDD返回顶部的k元素。我想知道这个操作是如何实现的。它是否先对RDD进行排序,然后返回顶部的k值?还是使用其他更有效的实现?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-31 11:59:46

不,它不能对整个RDD进行排序,那样的操作太昂贵了。

它将使用优先级队列分别为每个分区选择顶部N个元素。然后,将这些队列合并到还原操作中。这意味着整个RDD中只有一小部分在整个网络中被洗牌。

有关更多详细信息,请参阅RDD.scala

示例

3个输入分区

RDD.top(2)

代码语言:javascript
复制
[3, 5, 7, 10], [8, 6, 4, 12], [9, 1, 2, 11]
      ||            ||              || 
   [10, 7]        [12, 8]         [11, 9]
================== reduce ==================
                 [12, 11]
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31745259

复制
相关文章

相似问题

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