UDF Scala Spark语法

时间:2018-07-02 14:03:40

标签: scala apache-spark user-defined-functions

我试图在Spark中使用UDF,并注意到有三种不同的方法来声明UDF,从Scala语法出发,假设每种声明的含义是什么,如何从Java中以三种不同的方式访问一个UDF函数开发人员指出最后一个是直截了当的,但是前两个不清楚。我现在有点困惑。

// 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 :(得分:0)

您对多种方法都没问题,我更喜欢使用以下一种对我来说很有效的方法:

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