Mar*_*ace 6 scala user-defined-functions apache-spark udf
想象一下下面的代码:
def myUdf(arg: Int) = udf((vector: MyData) => {
// complex logic that returns a Double
})
Run Code Online (Sandbox Code Playgroud)
如何定义 myUdf 的返回类型,以便查看代码的人立即知道它返回 Double?
我看到有两种方法可以做到这一点,要么先定义一个方法,然后将其提升到一个函数
def myMethod(vector:MyData) : Double = {
// complex logic that returns a Double
}
val myUdf = udf(myMethod _)
Run Code Online (Sandbox Code Playgroud)
或者首先使用显式类型定义一个函数:
val myFunction: Function1[MyData,Double] = (vector:MyData) => {
// complex logic that returns a Double
}
val myUdf = udf(myFunction)
Run Code Online (Sandbox Code Playgroud)
我通常对我的 UDF 使用第一种方法
Spark函数定义了多个udf具有以下修饰符/类型的方法:static <RT,A1, ..., A10> UserDefinedFunction
您可以在方括号中指定输入/输出数据类型,如下所示:
def myUdf(arg: Int) = udf[Double, MyData]((vector: MyData) => {
// complex logic that returns a Double
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16104 次 |
| 最近记录: |