2017-07-03 160 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