一段时间后停止 Spark Streaming 作业

Stopping the Spark Streaming job after some time

有没有办法在一段时间后终止 spark streaming 作业,这样驱动程序就不会丢失并休息 API 显示作业已完成。

awaitTerminationOrTimeout(timeout: Long) 中的超时函数,您选择 timeout 的值,将在超时到期后继续执行您的主程序。

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

类似于:

// 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) 手动停止上下文,只要笔记本处于活动状态,spark 上下文就会仍然存在。 (这是我用来做原型的)