我想向我的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)
uuid
在DataFrame上使用UDF()
val newDf = myDf.withColumn("uuid", uuid())