具有替代方法的重载方法值 udf

Overloaded method value udf with alternatives

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

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

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

但是,我得到一个错误:

overloaded method value udf with alternatives:

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

例如,您有一个这样的方法 getData(它应该有一个 return 值):

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)
    })
    

这两种方式应该都可以,个人觉得方式一更好一些。