UDF scala spark синтаксис - PullRequest
0 голосов
/ 02 июля 2018

Я пытался использовать UDF в spark и заметил, что существует три различных способа объявления UDF, исходя из синтаксиса Scala, в зависимости от того, что означает каждое из этих объявлений, как можно получить доступ к одной функции UDF тремя различными способами из Java. разработчик указывает, что последний является прямым, но два предыдущих не ясны. Я немного растерялся.

// You could define UDF this way
val upperUDF1 = udf { s: String => s.toUpperCase }

// or this way
val upperUDF2 = udf[String, String](_.toUpperCase)

//or even this way!
def upperUDF3 = udf((data: String) => data.toUpperCase )

Спасибо @RameshMahrjan, после некоторого чтения я понял, что мы можем использовать фигурные скобки или скобки, и они взаимозаменяемы. Итак, насколько я понимаю, функция UDF определена для принятия общего значения, поэтому мы можем использовать параметр типа для ее вызова.

1 Ответ

0 голосов
/ 05 ноября 2018

Вы правы насчет множества способов, я предпочитаю использовать следующий, который мне подходит:

val removeBrackets = udf{(input_str:String) =>
    if(input_str != null && (input_str.contains("[") == true || input_str.contains("]") == true) ) {
      input_str.replaceAll("[\\[\\]]","")
    } else {
        input_str
    }
}
...