2016-07-15 38 views
0

我們可以使用scala創建一個將始終處於運行狀態的spark應用程序。就像它週期性地執行作業一樣,但驅動程序將繼續運行,這樣我就可以訪問由作業創建的RDD,而不必將其存儲到永久存儲區(類似於應用程序上下文)。Spark Cassandra應用程序始終運行模式

即使在作業完成後,總結要求仍然存在於內存中。

我是新來的火花斯卡拉和尋找你的指導相同。

回答

0

Spark程序只是一個普通的Scala程序,只要主方法不返回,應用程序就會繼續在集羣上運行。一種方法是將你的Spark代碼放入一個不斷處理請求的循環中。

while (!stop) { 
    // poll() block until you put a new job into it. 
    request = incomingJobQueue.poll() 
    // Process the request with Spark 
    // DO NOT call SparkContext.stop 
    val result = ... 
    outgoingQueue.put(result)  
} 

整個應用程序共享相同的SparkContext,因此您可以隨時訪問持久的RDD。需要注意的一件事是,當你不再需要RDD時,要記住unpersist,否則內存會很快耗盡。發生這種情況時,RDD將使用LRU策略從緩存中刪除,這可能會意外丟棄有用的RDD。較小的緩存還可以減少GC開銷,使程序運行得更快。

相關問題