Вы можете создать сеанс Spark один раз и обойтись без потери производительности. Однако немного неудобно модифицировать сигнатуру метода для передачи в объект сеанса. Вы можете избежать этого, просто вызвав getOrCreate
в функциях, чтобы получить тот же глобальный сеанс, не передавая его. Когда вызывается getOrCreate
, он устанавливает текущий сеанс по умолчанию SparkSession.setDefaultSession
объявление возвращает его для других getOrCreat
вызовов
val spark : SparkSession = SparkSession.builder
.appName("test")
.master("local[2]")
.getOrCreate()
//pass in function
function1(pass)
//obtain without passing
def function2(){
val s = SparkSession.builder..getOrCreate()
}