2017-06-12 69 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