Почему yarn сохраняет приложение Spark как «запущенное» после того, как я выполнил System.exit(-1)?

#apache-spark #hadoop-yarn

Вопрос:

Я хочу выйти из своего приложения Spark, когда что-то произойдет. Я привык System.exit(-1) так делать.

Когда System.exit(-1) он выполняется, я вижу, что мое приложение больше не работает, так как оно больше не печатает журналы, и я не вижу никаких новых микропатчей в SparkUI.

Тем не менее, yarn показывает мое приложение как «ЗАПУЩЕННОЕ» и перезапускает его примерно через час в новом контейнере. Этот новый контейнер затем System.exit(-1) повторяется, а также зависает в течение часа, прежде чем объявить мое приложение «НЕ УДАЛОСЬ».

Что я делаю не так? Почему мое приложение сразу не переходит в состояние «СБОЙ»? Перезапуск один раз в новом контейнере-это нормально. Но, похоже, когда я делаю System.exit(-1) пряжу, она не понимает, что мой контейнер готов, ей нужен 1 час, чтобы понять это.

System.exit(-1) В частности, мне нужно, чтобы я не мог просто создать исключение внутри foreachRDD, потому что, когда исключение создается внутри foreachRDD , spark продолжает обрабатывать еще несколько микропатчей, что привело меня к использованию System.exit(-1) , что предотвращает обработку новых микропатчей.