首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >火花: rdd.countApprox()与rdd.count()

火花: rdd.countApprox()与rdd.count()
EN

Stack Overflow用户
提问于 2017-03-07 18:53:07
回答 3查看 6.3K关注 0票数 4

请有人解释一下RDD countApprox()与count()之间的区别,如果可能的话也可以回答哪个最快?如果计数()非常慢,需要大约30分钟的...tried countApprox()

这就是我们使用它的方式,不确定它是否是最好的使用方法。

代码语言:javascript
运行
复制
rdd.countApprox(timeout=800, confidence=0.5)
EN

回答 3

Stack Overflow用户

发布于 2017-03-07 20:58:45

  • Count() -返回RDD中的元素数。
  • CountApprox - count()的近似版本,它在超时内返回一个可能不完整的结果,即使不是所有的任务都已经完成。

countApprox(timeout: Long, confidence: Double)

违约:信心= 0.95

注意:根据星火源代码,对countApprox的支持被标记为“实验性”。

使用timeout=800,您应该可以在<1分钟内看到一个近似计数。

你确定是其他原因导致了30分钟的减速吗?共享您的代码/代码片段,以便从其他成员获得更准确的输入。

票数 5
EN

Stack Overflow用户

发布于 2018-09-22 01:07:50

不是我的答案,但有一个非常有用和重要的答案here

在非常短的时间内,即使这比超时更长,countApprax.getFinalValue也会阻塞。

getInitialValue不阻塞,因此您将在超时期间得到响应。

但是,正如我从痛苦的经历中学到的,即使您使用getInitalValue,这个过程也将继续到最后的价值。

如果在循环中重复此操作,则getFinalValue将在从getInitialValue检索结果后很长时间内对多个RDDs运行。这会导致OOM条件和广播错误难以诊断。

票数 3
EN

Stack Overflow用户

发布于 2017-11-27 06:36:17

rdd.count() is an action, which is an eager operation

这意味着您之前编写的所有其他转换都将开始执行,这是因为Spark的惰性评估。因此,从本质上说,它不仅占用了所有时间的Count()操作,而且还需要等待执行的所有其他操作。

现在回到count() vs countApprox()的问题。计数就像从表中进行选择计数(*)一样。countApprox可以有一个超时和信任级别,返回一个大致正确的结果和一个可以接受的数字。

当我们更感兴趣地了解一个近似数字并节省时间时,我们应该使用countApprox,例如在流应用程序中。当您需要精确的计数时,应使用Count(),例如记录某项内容或进行审计。

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

https://stackoverflow.com/questions/42656040

复制
相关文章

相似问题

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