我試圖將一列添加到資料框中,使用來自特定列的值——假設它是一個 id——從另一個 df 中查找其實際值。
所以我設定了一個查找定義
def lookup(id:String): String {
return lookupdf.select(“value”)
.where(s”id = ‘$id’”).as[String].first
}
如果我通過傳遞一個 id 字串來單獨測驗它,查找 def 會起作用,它會回傳相應的值。
但是我很難找到在“withColumn”函式中使用它的方法。
dataDf
.withColumn(“lookupVal”, lit(lookup(col(“someId”))))
它正確地抱怨我傳入了一列,而不是預期的字串,問題是我如何從該列中為其提供實際值?
uj5u.com熱心網友回復:
您無法從withColumn. 想想withColumn只能在單個記錄級別訪問資料dataDf
請使用像這樣的連接
val resultDf = lookupDf.select(“value”,"id")
.join(dataDf, lookupDf("id") == dataDf("id"), "right")
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363984.html
標籤:数据框 斯卡拉 阿帕奇火花 apache-spark-sql
上一篇:Spark資料框“.as”函式不會洗掉匹配案例類中不存在的列
下一篇:有沒有辦法在不首先在pyspark.sql.DataFrame上呼叫它的情況下獲取pyspark.sql.column.Column的dtype?
