如何通过 scala 访问 udf 中的数据框列值

How do I access dataframe column value within udf via scala

我正在尝试向数据框添加一列,使用来自特定列的值——假设它是一个 id——从另一个 df 中查找它的实际值。

所以我设置了一个查找定义

def lookup(id:String): String {
    return lookupdf.select(“value”)
    .where(s”id = ‘$id’”).as[String].first 

}

如果我通过传递 id 字符串自行测试查找 def,它就会工作 returns 相应的值。

但我很难找到在“withColumn”函数中使用它的方法。

dataDf
.withColumn(“lookupVal”, lit(lookup(col(“someId”))))

它正确地抱怨我传递的是一列,而不是预期的字符串,问题是我如何给它该列的实际值?

您无法从 withColumn 访问另一个数据框。想到withColumn只能访问dataDf

的单个记录级别的数据

请使用类似的联接

val resultDf = lookupDf.select(“value”,"id")
.join(dataDf, lookupDf("id") == dataDf("id"), "right")