У меня есть работа Spark Streaming, которая работает непрерывно. Как я могу прекратить работу изящно? Я прочитал обычные рекомендации по прикреплению крюка отключения при мониторинге работы и отправке SIGTERM на задание.
sys.ShutdownHookThread {
logger.info("Gracefully stopping Application...")
ssc.stop(stopSparkContext = true, stopGracefully = true)
logger.info("Application stopped gracefully")
}
Кажется, что это работает, но не похоже на самый чистый способ остановить работу. Я что-то упустил?
С точки зрения кода это может иметь смысл, но как вы это используете в кластерной среде? Если мы начнем работу с искровым потоком (мы распределяем задания на всех узлах в кластере), нам нужно будет отслеживать PID для задания и node, на котором он был запущен. Наконец, когда нам нужно остановить процесс, нам нужно отслеживать, для чего node выполнялось задание, и PID для этого. Я просто надеялся, что будет более простой способ управления заданиями для потоковой работы.