2017-07-03 67 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?相关

相关问题