Spark-submit подает заявку, а не работу. Таким образом, вы, естественно, видите код завершения 0 и FINISHED , если приложение запущено и успешно остановлено независимо от того, было выполнено какое-либо задание или нет.
Чтобы получить код ошибки, вам нужно изменить задание, которое вы отправляете с помощью spark-submit, и изменить код завершения, который он создает при сбое критического задания.
Вы можете отслеживать состояние задания с помощью отправленного задания, например, перед закрытием или закрытием контекста. Вы можете использовать это:
JavaSparkContext sc;
...
JavaSparkStatusTracker statusTracker = sc.statusTracker();
...
final SparkJobInfo jobInfo = statusTracker.getJobInfo(jobId);
final JobExecutionStatus status = jobInfo.status();
Если задание не выполнено (status == FAILED), вы можете вызвать выход из приложения с кодом, отличным от 0
System.exit(1);
Что позволит приложению корректно закрывать контекст Spark и завершать работу. После этого вы сможете проверить состояние выхода вашей команды spark-submit, поскольку вы запускаете ее в автономном режиме.
Примечание: Для автономного режима вам даже не нужно вообще использовать Spark-submit. Банку можно запустить как java -jar ... , это будет то же самое.