2015-10-21 84 views
3

我發誓我這樣做過,但我找不到代碼或答案的名字。我想獲取當前運行的SparkContext的名稱並將其讀入一個變量或將其打印到屏幕上。一些東西沿線:找到當前正在運行的SparkContext

val myContext = SparkContext.getName 

因此,例如,如果我是在火星殼和跑它它會返回「sc」。任何人都知道如何獲得?

回答

3

我不太確定我跟隨...的名字,你的意思是應用程序的名稱?如果是這樣,你可以撥打appName。在火花外殼中,例如:sc.appName

如果你問得到變量保存上下文的名字,然後我不知道你能。 sc只是用於訪問spark-shell內的上下文的val,但您可以在自己的應用程序中將其命名爲任何內容。

[編輯]
在SparkContext上有一個getOrCreate方法,它可以返回一個現有的創建和註冊的上下文。這會做你想要的嗎?

https://spark.apache.org/docs/1.5.1/api/java/org/apache/spark/SparkContext.html#getOrCreate()

+0

如果我創建VAL SC =新SparkContext()我後來想能這樣說VAL CtxName = SparkContext.name並返回「SC」什麼的,我可以投與值的字符串。 「SC」。我試圖這樣做的原因是我試圖使用第三方庫,爲我創建(據說)SparkContext,但它似乎並沒有在那裏,如果它是,它被稱爲soemthing比「sc」 。我希望能夠通過名稱來驗證它是否存在,然後能夠使用它創建新的SQLContext,而不是通過挖掘代碼來找出它。 –

+0

嗯,我不認爲一個實例知道存儲的val的名字。你實質上要求的是SparkContext知道它的實例存儲在哪裏,這看起來有點瘋狂。如果你正在使用一個庫來爲你創建一個上下文,那麼就看看他們的代碼,看看它的名字(如果你繼承了一個特性或者另一個類,那應該不會太難)。 –

+0

我剛剛更新了我的答案,其中有些內容可能會對您有所幫助--SparkContext中的getOrCreate靜態方法將返回之前創建並註冊的上下文,或者給您一個新的。我不認爲你可以同時運行上下文的多個實例,所以如果有的話,你應該得到它。 –

相關問題