【发布时间】:2018-03-14 18:18:27
【问题描述】:
我有一个要求,我需要从 spark 数据框中过滤掉某个列的值(比如“价格”)需要与 scala 映射中存在的值匹配的行。scala 映射的键是值另一列(比如“id”)。 我的数据框包含两列:id 和 price。 我需要过滤掉所有价格与scala map中提到的价格不匹配的列。
我的代码是这样的:
object obj1{
// This method returns value price for items as per their id
getPrice(id:String):String {
//lookup in a map and return the price
}
}
object Main{
val validIds = Seq[String]("1","2","3","4")
val filteredDf = baseDataframe.where(baseDataframe("id").in(validIDs.map(lit(_)): _*) &&
baseDataframe("price") === (obj1.getPrice(baseDataframe("id").toString())))
// But this line send string "id" to obj1.getPrice() function
// rather than value of id column
}
}
我无法将 id 列的值传递给函数 obj1.getPrice()。 有什么建议可以实现吗?
谢谢,
【问题讨论】:
标签: scala apache-spark apache-spark-sql spark-dataframe spark-streaming