Scala 阿帕奇火花。UDF列基于另一列而不传递它';s名称作为参数。

Scala 阿帕奇火花。UDF列基于另一列而不传递它';s名称作为参数。,scala,apache-spark,spark-dataframe,udf,Scala,Apache Spark,Spark Dataframe,Udf,有一个列为firm的数据集,我正在向该数据集添加另一列-firm_id以下是示例: private val firms: mutable.Map[String, Integer] = ... private val firmIdFromCode: (String => Integer) = (code: String) => firms(code) val firm_id_by_code: UserDefinedFunction = udf(firmIdFromCode) ... v

有一个列为firm的数据集,我正在向该数据集添加另一列-firm_id以下是示例:

private val firms: mutable.Map[String, Integer] = ...
private val firmIdFromCode: (String => Integer) = (code: String) => firms(code)
val firm_id_by_code: UserDefinedFunction = udf(firmIdFromCode)
...
val ds = dataset.withColumn("firm_id", firm_id_by_code($"firm"))
是否有一种方法可以消除将$“firm”作为参数传递的情况(此列始终存在于DS中)。 我正在为此寻找一些东西:

val ds = dataset.withColumn("firm_id", firm_id_by_code)

您可以提供定义udf时它将使用的列

val someUdf = udf{ /*udf code*/}.apply($"colName")

// Usage in dataset
val ds = dataset.withColumn("newColName",someUdf)