2017-03-07 41 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)