【问题标题】:How do I access dataframe column value within udf via scala如何通过scala访问udf中的数据框列值
【发布时间】:2021-12-30 21:23:31
【问题描述】:

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

所以我设置了一个查找def

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

}

如果我通过传递一个 id 字符串自行测试查找定义,它会返回相应的值。

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您无法从 withColumn 访问另一个数据框。想想withColumn只能访问dataDf的单个记录级别的数据

    请使用类似的连接

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 2018-11-01
      相关资源
      最近更新 更多