2016-03-18 114 views
1

我正在構建一個lambda體系結構,並且需要Spark作爲它的批處理部分,以定期或完成後立即重新啓動,或者通過Spark Streaming作業調用重新啓動。我查看了一些東西,我可能不瞭解Spark上下文,但不確定我是否可以將Spark上下文放在一個循環中。任何人都可以提供快速指導嗎?另一個快速的問題是,考慮到會有數據不斷被添加到HBase中,Spark將從中讀取數據,緩存是否有用?先謝謝您的幫助。如何讓Spark在完成後自動重新啓動作業?

編輯:如果我實現一個SparkListener並且在作業結束時調用collect,那麼是否所有的計算都會重做?

回答

0

當您撥打awaitTermination() StreamingContext不會退出並繼續運行。您需要從另一個線程調用stop()來停止流式上下文。

JavaDStream<T> jsonStrem = streamingContext.receiverStream(receiver);    
streamingContext.start(); 
streamingContext.awaitTermination(); 

receiver將被稱爲每批間隔

+0

感謝您的意見。有趣的是,我實際上正在嘗試批量執行此操作,如在SparkContext中,而不是流式操作。我的Spark Streaming工作負責處理lambda體系結構的速度層,並且我有一個Spark作業來完成批處理層。我希望這更清楚。也許我誤解了lambda體系結構的用法。 – SpooXter

相關問題