使用替代方法重载方法值udf

时间:2017-12-04 03:55:58

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

我正在尝试使用以下代码在Databricks Community Edition中注册表:

import org.apache.spark.sql.functions.udf

val getDataUDF(url: String):Unit = udf(getData(url: String):Unit)

然而,我收到错误:

  

使用替代方法重载方法值udf:

1 个答案:

答案 0 :(得分:2)

您的UDF语法看起来有点奇怪,在调用getData()时不应该定义类型。另外,UDF的输入应该在方法本身内部。

例如,你有一个这样的方法getData(它应该有一个返回值):

def getData(url: String): String = {...}

要将其变成udf,有两种方法:

  1. getData重写为函数

    val getData: (String => String) = {...}
    val getDataUDF = udf(getData)
    
  2. 调用udf

    中的getData方法
    val getDataUDF = udf((url: String) => {
      getData(url)
    })
    
  3. 这两种方式都应该有效,我个人认为方法1看起来好一点。