2017-06-12 42 views
1

我在main()函数创建一个会话代码的任何地方,像这样:我怎样才能得到当前SparkSession在

val sparkSession = SparkSession.builder.master("local[*]").appName("Simple Application").getOrCreate() 

现在,如果我要配置的应用程序或访问属性,我可以在同一个函数中使用本地变量sparkSession

如果我想在同一个项目的其他地方访问此sparkSession,如project/module/.../.../xxx.scala,该怎么办?我该怎么办?

+0

你在哪里创建sparkSession?你现在试过什么来从xxx.scala访问它? – hadooper

+0

你可以分享一些关于我们的用例分享sparkSession的更多信息吗? – BDR

+0

@hadooper在主要对象的主要功能。我不知道我是否使用'getOrCreate()'会让我同样的会话 – PC9527

回答

3

一旦会话创建(任何地方),你可以放心地使用:

SparkSession.builder().getOrCreate() 

为了得到(同)会议代码的任何地方,只要会话还活着。 Spark保持单个活动会话,因此除非停止或崩溃,否则您将获得相同的会话。

+0

这确实有帮助。谢谢。 – kris433

0

SparkSession变量已被定义为

val sparkSession = SparkSession.builder.master("local[*]").appName("Simple Application").getOrCreate() 

这个变量是要point/refer到仅一个SparkSession作为其一个val。你可以随时通过不同的类别,方便他们存取以及

val newClassCall = new NewClass(sparkSession) 

现在你可以在新类中使用相同的sparkSession为好。

+0

在这种情况下,如果我将它传递给其他类,为什么我仍然需要一个新类(虽然它们是相同的sparkSession)?喜欢'def f1(ss:SparkSession)= //使用ss做某事。 – PC9527

+0

我正在将火花传递作为新课程的参数。 –

+0

你的意思是当你实例化一个类? – PC9527