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



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

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

现在假设我们使用Spark submit命令在纱线上启动了Spark应用程序。Job1成功,但Job2失败了。

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

当我尝试使用Spark提交命令在纱线上启动Spark应用程序时,JOB1和JOB2就会触发。但是我不希望Job1触发,因为它已经成功完成。

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

您可以将支票放在下面的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
}

最新更新