私はSpark 2.0を使用していますが、入力の問題でジョブが失敗することがあります。たとえば、私はS3フォルダから日付を基にしてCSVファイルを読み込んでいますが、現在の日付のデータがない場合、私の仕事は何も処理しないので、次のように例外がスローされます。これは、ドライバのログに印刷されます。スパーク - 失敗したジョブを特定する方法
Exception in thread "main" org.apache.spark.sql.AnalysisException: Path does not exist: s3n://data/2016-08-31/*.csv;
at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$class.failAnalysis(CheckAnalysis.scala:40)
at org.apache.spark.sql.catalyst.analysis.Analyzer.failAnalysis(Analyzer.scala:58)
at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$$anonfun$checkAnalysis$1.apply(CheckAnalysis.scala:174)
at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$$anonfun$checkAnalysis$1.apply(CheckAnalysis.scala:67)
...
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:729)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
16/09/03 10:51:54 INFO SparkContext: Invoking stop() from shutdown hook
16/09/03 10:51:54 INFO SparkUI: Stopped Spark web UI at http://192.168.1.33:4040
16/09/03 10:51:54 INFO StandaloneSchedulerBackend: Shutting down all executors
16/09/03 10:51:54 INFO CoarseGrainedSchedulerBackend$DriverEndpoint: Asking each executor to shut down
Spark App app-20160903105040-0007 state changed to FINISHED
ただし、このキャッチされていない例外にもかかわらず、私のスパークジョブのステータスは「完了」です。例外があるので、私はそれが 'FAILED'ステータスになると思います。なぜそれが終わったものとしてマークされていますか?仕事が失敗したかどうかはどうすればわかりますか?
注:SparkLauncherを使用してSparkジョブを生成し、AppHandleを介して状態の変化をリッスンしています。しかし、私が受け取る状態の変化は、私がFAILEDを期待しているところでは終わっています。
おかげカマル。しかし、私はプログラムでこれを行う方法を探しています。別の注記では、Spark MasterのWeb UIでさえ、私が「FAILED」と思っていたところで、そのジョブを「FINISHED」と表示します。 –
ジョブをクリックすると詳細が表示されます。また、ジョブが失敗すると、糸UIの失敗したジョブセクションの下に表示されます。 –