考虑我有一个火花应用程序并且有两个动作导致两个火花作业。
//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被触发,因为它已经成功完成。
有什么方法可以确保只运行一个火花应用程序失败的工作?
答案 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
}