Ho un lavoro Spark Streaming che è stato eseguito continuamente. Come posso interrompere il lavoro con garbo? Ho letto le solite raccomandazioni di collegare un gancio di arresto nel monitoraggio del lavoro e l'invio di un SIGTERM al lavoro.Come si interrompe un lavoro di streaming spark?
sys.ShutdownHookThread {
logger.info("Gracefully stopping Application...")
ssc.stop(stopSparkContext = true, stopGracefully = true)
logger.info("Application stopped gracefully")
}
Sembra funzionare ma non sembra il modo più pulito per interrompere il lavoro. Mi sto perdendo qualcosa qui?
Da un punto di vista del codice può avere senso, ma come si usa in un ambiente cluster? Se avviamo un lavoro spark in streaming (distribuiamo i lavori su tutti i nodi del cluster) dovremo tenere traccia del PID per il lavoro e il nodo su cui era in esecuzione. Infine, quando dobbiamo interrompere il processo, dobbiamo tenere traccia del nodo su cui è stato eseguito il lavoro e del PID. Speravo solo che ci sarebbe stato un modo più semplice di controllo dei lavori per i lavori di streaming.
Cosa non ti sembra pulito? Penso che sia corretto. –
Ho aggiunto qualche altro dettaglio alla domanda. – Saket