Apache spark Spark 1.6中的自定义项重新分配到val错误

Apache spark Spark 1.6中的自定义项重新分配到val错误,apache-spark,apache-spark-1.6,Apache Spark,Apache Spark 1.6,我正在使用Spark 1.6 下面的udf用于清除地址数据 sqlContext.udf.register("cleanaddress", (AD1:String,AD2: String, AD3:String)=>Boolean = _.matches("^[a-zA-Z0-9]*$")) UDF名称:cleanaddress 三个输入参数来自数据帧列(AD1、AD2和AD3) 请有人帮我修复下面的错误 我正在尝试编写udf,它接受三个参数(dataframe的3个地址列),计算并只给

我正在使用Spark 1.6

下面的udf用于清除地址数据

sqlContext.udf.register("cleanaddress", (AD1:String,AD2: String, AD3:String)=>Boolean = _.matches("^[a-zA-Z0-9]*$"))
UDF名称:cleanaddress 三个输入参数来自数据帧列(AD1、AD2和AD3)

请有人帮我修复下面的错误

我正在尝试编写udf,它接受三个参数(dataframe的3个地址列),计算并只给出过滤器记录

Error:
Error:(38, 91) reassignment to val
    sqlContext.udf.register("cleanaddress", (AD1:String, AD2: String, AD3:String)=>Boolean = _.matches("^[a-zA-Z0-9]*$"))

对于给定的代码,您的逻辑不太清楚。您可以做的是返回一个有效地址数组,如下所示:

sqlContext.udf.register("cleanaddress", (AD1:String, AD2: String, AD3:String)=> Seq(AD1,AD2,AD3).filter(_.matches("^[a-zA-Z0-9]*$")))

请注意,这将返回一个复杂列(即数组)

您好,先生,我正在尝试这样做。将函数传递给每个列。sqlContext.udf.register(“cleanaddress”,(AD:String)=>Seq(AD.filter(^[a-zA-Z0-9]*$”)匹配),但如果值是非字母数字,则会被NULL或空字符串替换。如果我们可以修改函数,请帮助我。非常感谢