UDF в Spark 1.6 Переназначение на ошибку val

Я использую 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]*$"))

person Sophie Dinka    schedule 19.09.2019    source источник


Ответы (1)


Ваша логика не совсем понятна для вашего кода. Что вы можете сделать, так это вернуть массив допустимых адресов, например:

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

Обратите внимание, что это вернет сложный столбец (т.е. массив)

person Raphael Roth    schedule 19.09.2019
comment
Здравствуйте, сэр, я пытаюсь сделать что-то подобное. передача функции в каждый столбец. sqlContext.udf.register(cleanaddress, (AD:String)=>Seq(AD).filter(_.matches(^[a-zA-Z0-9]*$))), но если значение не буквенно-цифровое, чем заменить на NULL или пустую строку. Пожалуйста, помогите мне, если мы можем изменить функцию. Огромное спасибо - person Sophie Dinka; 20.09.2019