我正在尝试使用以下scala代码创建UDF
if (empty($error_message) && !isset($_POST["subject1"],
$_POST["subject2"])){
$error_message = 'Invalid form input! Please select at
least one option';
}
当我运行此代码时,我得到的任务不是可序列化的异常。
任何想法?感谢。
答案 0 :(得分:1)
udf
被视为一个黑盒子,它要求传递的列被序列化和反序列化,因此当您有内置函数的替代方法时,不建议使用udf
。
使用udf
调用withColumn
函数很好,但您已在validateId
函数内调用了另一个函数udf
,导致了该问题。
我建议您不要使用udf
函数,因为只需使用when
内置函数就可以达到要求。
import org.apache.spark.sql.functions._
val formattedDF2 = df.withColumn("result_col", when($"id" === 1, lit("ID IS EQUAL TO 1")).otherwise(when($"id" > 2, lit("ID IS GREATER THAN 2")).otherwise(when($"id" > 1, lit("VALID RECORDS")).otherwise(lit("NO VALID RECORDS")))))