Spark创建不接受输入的UDF
Spark create UDF that doesn't take in input
我想在我的 Spark 数据框中添加一个带有随机生成的 ID 的列。为此,我使用 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)
在 DataFrame 上使用 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
我想在我的 Spark 数据框中添加一个带有随机生成的 ID 的列。为此,我使用 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)
在 DataFrame 上使用 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