Функция "col" может быть заключена в UDF:
// functions
val emptyToNull : (String) => String = (value: String) => if(StringUtils.isBlank(value)) null else value
val emptyToNullUDF = udf(emptyToNull)
// usage
val result_df= List(("NonEmpty"," ") ).toDF("nonempty","empty")
val result_df1 = result_df.select(result_df.columns.map(c => emptyToNullUDF(col(c)).alias(c).cast(StringType)): _ * )
result_df1.show(false)
Выход:
+--------+-----+
|nonempty|empty|
+--------+-----+
|NonEmpty|null |
+--------+-----+
Примечание: «псевдоним» используется для сохранения имен столбцов. Кроме того, если исходные столбцы имеют StringType, условие ".cast (StringType)" не требуется.