2015-10-21 49 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静态方法将返回之前创建并注册的上下文,或者给您一个新的。我不认为你可以同时运行上下文的多个实例,所以如果有的话,你应该得到它。 –

相关问题