scala - Spark创建不接受输入的UDF

标签 scala apache-spark apache-spark-sql spark-dataframe udf

我想在我的 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())

关于scala - Spark创建不接受输入的UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41867925/

相关文章:

scala - 如何将完全格式化的 SQL 与 Spark 结构化流结合使用

scala - VS Code 在集成控制台中执行当前行或选择

apache-spark - ApacheSpark 从 S3 异常读取 : Premature end of Content-Length delimited message body (expected: 2, 250,236;收到 : 16, 360)

apache-spark - 向数据框添加一个新列。新列我希望它是一个 UUID 生成器

java - 使用数据帧在 Java 中对 Spark 中的 n 列求和

scala - IntelliJ Idea 14 : cannot resolve symbol spark

parsing - 在 StandardTokenParsers 中使用正则表达式

java - 未找到 Spark SQL 包

java - Freemarker 模板引擎 <#if condition> 具有动态条件

python - pyspark withcolumn 在每行中插入列表