SparkSession.close () запускает успешную повторную обработку задания в EMR - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть искровая работа в EMR. Работа отлично работает, когда я не включаю sparkSession.close (). Всякий раз, когда я вызываю sparksession.close (), задание будет зависать и продолжать выводить журнал следующим образом, а затем повторно обрабатывать последний этап.

INFO YarnAllocator: Исполнитель для контейнера Контейнер_ _ завершен из-за события YARN (например, упреждение), а не из-за ошибки в запущенном задании.

INFO YarnAllocator: Завершено контейнер container_ _ на хосте: ip-172-31-26-30.ec2.internal (состояние: ЗАВЕРШЕНО, статус выхода: 0)

Я сравнил работу, которая не вызывает close (), с той, у которой есть вызов, журнал немного отличается. По сути, в задании нет функции close (), есть еще одна строка в журнале, которая выделена жирным шрифтом ниже.

20/02/22 02:46:19 Выполнено ** работа успешно. outputPath: **

20/02/22 02:46:20 INFO ApplicationMaster: окончательный статус приложения: SUCCEEDED, выходной код: 0

20/02/22 02 : 46: 20 ИНФОРМАЦИЯ SparkContext: вызов остановки () из отключающего крюка

20/02/22 02:46:20 ИНФОРМАЦИЯ SparkUI: остановлен веб-интерфейс Spark в http://ip-**

20/02/22 02:46:20 INFO YarnAllocator: драйвер запросил общее количество исполнителей: 0.

20/02/22 02:46:20 INFO YarnClusterSchedulerBackend: Закрытие завершение работы всех исполнителей 20/02/22 02:46:20 ИНФОРМАЦИЯ YarnSchedulerBackend $ YarnDriverEndpoint: запросить завершение работы каждого исполнителя

20/02/22 02:46:20 ИНФОРМАЦИЯ SchedulerExtensionServices: Остановка SchedulerExtensionServices

Я подозреваю, что функция close () была выполнена перед установкой статуса приложения. Поэтому я добавил несколько секунд времени сна, прежде чем закрыть. Тем не менее, это не работает вообще.

Кстати, это задание выведет более 20 000 небольших файлов на S3.

Может кто-нибудь помочь мне с этой проблемой?

...