在具有多个操作的spark应用程序中重新运行失败的spark作业(作业)

时间:2017-03-02 11:10:55

标签: hadoop apache-spark yarn

考虑我有一个火花应用程序并且有两个动作导致两个火花作业。

//spark Application 
     //Spark Job1
       ....
       errorCount.saveAsTextFile(errorCountOpPath);

    //spark Job2    
      ......
      debugCount.saveAsTextFile(debCountOpPath);

现在假设我们使用spark submit命令在Yarn上启动了spark应用程序。 job1成功但job2失败了。

现在我想重新运行job2,因为它失败了。

当我尝试使用spark submit命令在Yarn上重新启动spark应用程序时,job1和job2都会被触发。但我不希望job1被触发,因为它已经成功完成。

有什么方法可以确保只运行一个火花应用程序失败的工作?

1 个答案:

答案 0 :(得分:0)

您可以检查saveAsTextFile调用,如下所示: -

val conf = sc.hadoopConfiguration
val fs = org.apache.hadoop.fs.FileSystem.get(conf)
val exists = fs.exists(new org.apache.hadoop.fs.Path("/path/on/hdfs/to/SUCCESS.txt"))
if(!exists) {
// write the the file
}