Spark 创建不接受输入的 UDF



我想将一个具有随机生成 id 的列添加到我的 Spark 数据帧中。为此,我使用 UDF 调用 UUID 的随机 UUID 方法,如下所示:

def getRandomId(s:String) : String = {
    UUID.randomUUID().toString()
}
val idUdf = udf(getRandomId(_:String))
val newDf = myDf.withColumn("id", idUdf($"colName"))

显然,我的getRandomId函数不需要输入参数;但是,我无法弄清楚如何创建一个不接受列作为输入的UDF。这在Spark中可能吗?

我正在使用 Spark 1.5

您可以注册不带参数的UDF。在这里() => String将解决需求

import org.apache.spark.sql.functions.udf
val uuid = udf(() => java.util.UUID.randomUUID().toString)

在数据帧上使用 UDF( uuid

val newDf = myDf.withColumn("uuid", uuid())

你可以试试这个:

def getRandomId() : String = {
   UUID.randomUUID().toString()
}
val idUdf = udf(getRandomId _)
val newDf = df.withColumn("id", idUdf())

诀窍是getRandomId _创建一个函数() => String从您的方法中

相关内容

  • 没有找到相关文章

最新更新