UDF Scala 火花语法
Posted
技术标签:
【中文标题】UDF Scala 火花语法【英文标题】:UDF scala spark syntax 【发布时间】:2018-07-02 14:03:39 【问题描述】:我试图在 spark 中使用 UDF,并注意到有三种不同的方式来声明 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 函数被定义为接受泛型值,因此我们可以使用类型参数来调用它。
【问题讨论】:
第一个和第三个没有区别。第二个是不同的,只是使用了类型参数 谢谢@RameshMahrjan 【参考方案1】:你说的很多种方法,我更喜欢使用以下一种,这对我很有效:
val removeBrackets = udf(input_str:String) =>
if(input_str != null && (input_str.contains("[") == true || input_str.contains("]") == true) )
input_str.replaceAll("[\\[\\]]","")
else
input_str
【讨论】:
以上是关于UDF Scala 火花语法的主要内容,如果未能解决你的问题,请参考以下文章