Spark 1.6中的UDF重新分配给val错误

时间:2019-09-19 18:25:22

标签: 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 来自DataFrame列的三个输入参数(AD1,AD2和AD3)。

请有人帮我解决以下错误。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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