2017-07-03 109 views
2

有一個簡單的,也許怪異問題執行兩次:以下代碼DAG執行兩次預計,因爲我打電話的動作兩次:阿帕奇星火:達格沒有爲reduceByKey

val input = sc.parallelize(List(1,2,3,4)) 
val result = input.map(x => { 
    println("!!! Input Map !!!") 
    errorLines.add(1) 
    (x,1) 
}) 
//.reduceByKey(_+_) 
println(result.count()) 
println(result.collect()) 

如果我取消註釋reduceByKey行 - DAG將只執行一次,雖然reduceByKey是轉換,並且我正在調用兩次操作。

這是否意味着Spark並不總是重新計算DAG?

回答

4

Spark中的Shuffle文件充當隱式緩存,因此無論何時您的管道包含shuffle階段(如*ByKey),並且涉及節點失敗,Spark將只重複最後一個階段。

這是說既不使用標準輸出,也不累積errorLines是一個)在轉換是可靠的。在正常執行期間,前者會丟失,而後者不會提供一次保證。

What does "Stage Skipped" mean in Apache Spark web UI?相關

相關問題