我想写一个火花流媒体程序,我想正常关闭我的应用程序,以防万一我的应用程序收到关机挂钩。我写了下面的代码片段来完成这个。火花流上下文挂在停止
sys.ShutdownHookThread {
println("Gracefully stopping MyStreamJob")
ssc.stop(stopSparkContext = true, stopGracefully = true)
println("Streaming stopped")
sys.exit(0)
}
在调用此代码时,只调用第一个println。这是第二个println Streaming Stopped从未见过。我在控制台上收到的最后一条消息是:
39790 [shutdownHook1] INFO org.spark-project.jetty.server.handler.ContextHandler - stopped o.s.j.s.ServletContextHandler{/streaming,null}
39791 [shutdownHook1] INFO org.spark-project.jetty.server.handler.ContextHandler - stopped o.s.j.s.ServletContextHandler{/streaming/batch,null}
39792 [shutdownHook1] INFO org.spark-project.jetty.server.handler.ContextHandler - stopped o.s.j.s.ServletContextHandler{/static/streaming,null}
15/10/19 19:59:43 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/static/streaming,null}
我正在使用spark 1.4.1。我必须使用kill -9
手动杀死火花才能结束的作业。这是预期的行为还是我做错了什么?
我已经有了Spark 1.5的相同经验。由于'stop()'仍然在文档和API中,我认为它有一定的价值,但现在可能只是为了内部使用......我只是'awaitTermination()'。 – BAR