2017-07-03 159 views
1

是否有某种方法可以在一段时间后终止Spark Streaming作业,因此驱动程序不会丢失,并且其余API会将作业完成。在一段时间后停止Spark Streaming作业

+0

如果你需要停止它,它可能是不正确的Spark Streaming –

+0

我知道这不是一个好的做法,但我需要,因为我想要的内存使用指标和大象博士需要一个已完成作业 – JSR29

回答

1

awaitTerminationOrTimeout(timeout: Long)中的超时功能与您选择的timeout值将在超时过期后恢复执行主程序。

之后我们需要有一些其他的等待函数来保持火花上下文以供检查。

喜欢的东西:

// create streaming context 
// do dstream stuff 
streamingContext.awaitTerminationOrTimeout(streamingTimeout) 
streamingContext.stop(stopSparkContext = false) 
Thread.sleep(afterStreamingTimeout) // keep alive for some time. 
// the end 

作为替代方案,你可以使用一个互动的环境,例如笔记本,对于那些类型的实验。在那里你可以通过发行streamingContext.stop(stopSparkContext = false)来手动停止上下文,只要笔记本处于活动状态,火花上下文仍然有效。 (这是我用来原型)

+0

@ JSR29 PS:交互式探索示例:https://www.youtube.com/watch?v=q3TjGjffs3g&t=99s(不是流式传输,但概念相似) – maasg

+0

@ JSR29这可能是一个更好的示例Spark Streaming交互式探索:https://youtu.be/qxsOjJnwcKQ?t = 526 – maasg