【发布时间】:2015-10-20 03:28:15
【问题描述】:
我正在尝试编写一个 spark 流程序,我想在其中正常关闭我的应用程序,以防我的应用程序收到关闭挂钩。我写了下面的 sn-p 来完成这个。
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()。
标签: scala apache-spark spark-streaming