В следующем коде я ожидал, что компилятор определит, что output
определяется либо в разделе if
, либо в разделе else
.
val df1 = spark.createDataFrame(Seq(
(1, 10),
(2, 20)
)).toDF("A", "B")
val df2 = spark.emptyDataFrame
if(df2.isEmpty){
val output = df1
}
else{
val output = df2
}
println(output.show)
Однако, это выдает ошибку «1007». если я делаю ту же самую точную реализацию в Python, она работает нормально, и я получаю ожидаемый результат. Чтобы заставить эту работу работать в spark с использованием scala, я определил output
как переменную с переменными параметрами и обновил ее внутри if-else
.
var output = spark.emptyDataFrame
if(df2.isEmpty){
output = df1
}
else{
output = df2
}
println(output.show)
Почему первая реализация не работает и есть ли способ получить ожидаемый результат без использования изменяемой переменной?