2017-10-16 62 views
0

我正在從Spark 1.3.0遷移到Spark 2.1.1。 早些時候,我能夠在Java中使用的火花1.3.0創建SparkContext如下:「在同一個JVM檢測到多個運行SparkContexts」如何遷移多個SparkContexts處於活動狀態的Spark應用程序?

SparkConf conf = new SparkConf().setAppName(dsp.getAppName()).setMaster("local").set("spark.driver.allowMultipleContexts", "true"); 
JavaSparkContext java_sc = new JavaSparkContext(conf); 

但是我得到錯誤和「org.apache.spark.SparkException: Failed to get broadcast_0_piece0 of broadcast_0"

有人可以幫助我走出

回答

0

引用的JavaSparkContext的Javadoc:?

只有一個SparkContext可以是每個JVM中的活動必須停止()活動SparkContext創建一個新的前之一。

在Scala中有SparkContext.getOrCreate,你可以從任何地方在Spark應用程序中使用來獲取或實例化一個SparkContext並將其註冊爲一個單身對象。

getOrCreate():SparkContext該函數可以被用來獲得或實例化一個SparkContext並將其註冊爲一個單獨的對象。因爲每個JVM只能有一個活動的SparkContext,所以當應用程序可能希望共享一個SparkContext時,這很有用。

我無法找到Java的版本的方法,所以也許只是使用Scala的。

+0

@ Ankur100如果它適合您,請接受答案。我和社區會很感激。謝謝。 –

+0

非常感謝你的回答Jacek。我解決了我的問題,因爲該解決方案適用於我的案例。 如果將來遇到問題,我也會嘗試您的方法。 – Ankur100

0

以下的答案似乎我的情況下工作: https://stackoverflow.com/a/34880317/3567232

我所做的只是創建一個從現有SparkContext新JavaSparkContext。

+1

是的。我想我不需要多個SparkContext。但是,如果有人想使用多個上下文,他們會發現你的答案更有幫助 – Ankur100

相關問題