Spark:如何加速rdd.count()

时间:2017-03-07 16:56:21

标签: apache-spark spark-streaming

我们有流量应用程序有计数操作

tempRequestsWithState is a DStream

tempRequestsWithState.foreachRDD { rdd =>

    print (rdd.count())

}

计数操作需要花费大量时间而且缓慢耗时约30分钟如果有人建议采用加速此操作的方法,我们会非常感激,因为我们正在消耗@ 10,000个事件/秒还注意到我们每个RDD有54个分区

enter image description here

在此输入图片说明

enter image description here

1 个答案:

答案 0 :(得分:1)

虽然我从未使用过它,但您可以尝试在countApprox上使用RDD。这似乎可以估算出您想要花费的给定时间(毫秒)和置信区间(即真实值在该范围内的概率)的真实计数:

示例用法:

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