Получить статус выхода для не выполненных заданий Spark при отправке через Spark-submit - PullRequest
0 голосов
/ 29 августа 2018

Я отправляю задания на спарк с помощью spark-submit в автономном режиме. Все эти задания запускаются с помощью cron. Я хочу следить за этими работами на любой провал. Но при использовании spark-submit, если в приложении возникает какое-либо исключение (например, ConnectionException), задания прекращаются, и я получаю 0 в качестве состояния выхода для spark-submit. Кроме того, в Spark-UI отображается статус задания как завершенный. Что можно сделать, чтобы получить сбой искровых заданий в случае возникновения какого-либо исключения?

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

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 ... , это будет то же самое.

0 голосов
/ 29 августа 2018

Вы можете использовать spark-submit --status (как описано в [Освоение Apache Spark 2.0]).

spark-submit --status [submission ID]

Чтобы проверить его статус.

  1. Вы можете отправить свою работу, вызвав внешний процесс (spark-submit) и прочитав выходной поток для анализа и извлечения submissionId.
  2. Затем проверьте статус своей работы, позвонив по указанному выше процессу.
...