2017-03-07 37 views
1

我们已经流应用具有计数动作星火:如何加快rdd.count()

tempRequestsWithState is a DStream 

tempRequestsWithState.foreachRDD { rdd => 

    print (rdd.count()) 

} 

计数行动采取了大量的时间和慢需要大约30分钟将不胜感激,如果任何人可以建议的方式,因为我们正在消耗@10,000个事件用来加快这个动作/秒也注意到我们有54个分区,每个RDD

enter image description here

进入这里

enter image description here

+1

你可以使用'rdd.countApprox'并确保你的'RDD'的划分是合理的 –

+0

@RaphaelRoth你能否提供关于rdd.countApprox的更多细节我知道它的语法是countApprox(timeout = 800,confidence = 0.5 )超时代表什么,信心是什么意思? – user2359997

+0

你为什么转发这个? http://stackoverflow.com/questions/42639455/spark-how-to-speed-up-rdd-count –

回答

1

的形象描述。虽然我从来没有用过它,你可以尝试在你的RDD使用countApprox。这似乎给你真实计数的估计要花费时间(毫秒)和置信区间(即probabilty,真正的价值在于范围内)给定的时间:

用法示例:

val cntInterval = df.rdd.countApprox(timeout = 1000L,confidence = 0.95) 
val (lowCnt,highCnt) = (cntInterval.initialValue.low, cntInterval.initialValue.high)