Ниже приведена моя Spark-функция, которая обрабатывает пустые значения в столбце DataFrame независимо от его типа данных.
def nullsToZero(df:DataFrame,nullsToZeroColsList:Array[String]): DataFrame ={
var y:DataFrame = df
for(colDF <- y.columns){
if(nullsToZeroColsList.contains(colDF)){
y = y.withColumn(colDF,expr("case when "+colDF+" IS NULL THEN 0 ELSE "+colDF+" end"))
}
}
return y
}
import spark.implicits._
val personDF = Seq(
("miguel", Some(12),100,110,120), (null, Some(22),200,210,220), ("blu", None,300,310,320)
).toDF("name", "age","number1","number2","number3")
println("Print Schema")
personDF.printSchema()
println("Show Original DF")
personDF.show(false)
val myColsList:Array[String] = Array("name","age","age")
println("NULLS TO ZERO")
println("Show NullsToZeroDF")
val fixedDF = nullsToZero(personDF,myColsList)
В приведенном выше коде у меня есть типы данных Integer и String, оба были обработаны моимFunciton.Но я подозреваю, что приведенный ниже фрагмент кода в моей функции может повлиять на производительность, но я не уверен.() и переназначение DF снова и снова?Заранее спасибо.