var result_df1 = result_df.select(result_df.columns.map(c => col(c).cast(StringType)): _ * )
这是我正在执行的数据框操作。我有一个名为EmptyToNull
的udf,它接受一个参数(一个值),检查它是否为空,如果是,则将其更改为null。是否可以在我已经执行的此数据帧操作中调用此UDF?
答案 0 :(得分:0)
函数“ 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)”。