Spark UDF错误 - 不支持类型为Any的架构

oth*_*r15 8 apache-spark apache-spark-sql spark-dataframe

我正在尝试创建一个udf,用0替换列中的负值.

我的数据帧叫做df,包含一个名为avg_x的列.这是我创建udf的代码

val noNegative = udf {(avg_acc_x: Double) => if(avg_acc_x < 0) 0 else "avg_acc_x"}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

java.lang.UnsupportedOperationException: Schema for type Any is not supported
Run Code Online (Sandbox Code Playgroud)

df.printSchema返回

|-- avg_acc_x: double (nullable = false) 
Run Code Online (Sandbox Code Playgroud)

所以我不明白为什么会出现这种错误?

Dav*_*fin 16

这是因为else返回了String:"avg_acc_x".拿掉报价:

val noNegative = udf {(avg_acc_x: Double) => if(avg_acc_x < 0) 0 else avg_acc_x}
Run Code Online (Sandbox Code Playgroud)