2016-12-16 3 views
0

Я запускаю работу PySpark на Spark 2.0.0 Standalone. Моя работа завершается успешно (как указано в пользовательском интерфейсе и выходном файле), но контекст искры никогда не закрывается, и моя работа остается в живых.Spark 2.0.0 Автономная работа PySpark после завершения

Я использую следующий искровой подать заявление:

./bin/spark-submit --master ${sparkmaster} --executor-memory 16g --num-executors 45 --executor-cores 3 --verbose /home/spark_mr1mr2.py 

Вот конец моего PySpark сценария:

.coalesce(1,shuffle=True).saveAsTextFile("mr2out"+os.environ.get("RUN_NAME")+"/", codec) 
exit() 

А вот последние сообщения журнала:

16/12/15 23:11:06 INFO BlockManagerInfo: Removed broadcast_0_piece0 on 192.168.14.250:33654 in memory (size: 20.1 KB, free: 8.4 GB) 
16/12/15 23:11:06 INFO ContextCleaner: Cleaned accumulator 0 

Что я могу сделать, чтобы получить работу, чтобы завершить работу и выйти чисто? Я что-то упускаю?

ответ

1

Как правило, способ изящно останавливать искровые приложения - это вызвать stop() объекта SparkContext. Если вы используете SparkSession, вы можете вызвать stop() на этом, так как все, что он делает, это остановить базовый SparkContext.

Скорее всего, sc.stop() или spark.stop() вместо exit() исправит это.

+0

Спасибо. Я еще не смог проверить это прямо. Я думаю, что это работает, но я приму ответ, когда смогу подтвердить, что он решил мою проблему. –

+0

Похоже, что либо повышение исключения, либо вызов sc.stop() предотвратит зависание задания. –

Смежные вопросы