2017-03-02 1 views
0

나는 스파크 응용 프로그램이 있고 두 번의 스파크 작업을 수행하는 두 가지 작업을 고려하십시오.여러 작업 (작업)이있는 스파크 응용 프로그램에서 실패한 스파크 작업 다시 실행

//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

아래처럼 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 
} 
관련 문제