【发布时间】:2019-03-13 18:44:22
【问题描述】:
想要将数据框列与值进行比较。我试图转换价值并使用lit(),但没有任何结果。下面我附上我的硬编码版本,但它不满足要求。
object Analyzer {
def main(args: Array[String]): Unit = {
// my lav used to comare with column
val minEfficiency: Double = 0.9
// I would like compare column with declared val
// here is hardcoded (poor) version
val metrics = dataframe.withColumn("State",
when($"Efficiency" >= 0.9, "ok").otherwise("not ok")
)
}
}
数据框信息:
scala> dataframe.printSchema()
root
|-- SensorId: integer (nullable = true)
|-- Efficiency: double (nullable = true)
scala> dataframe.show()
+--------+-----------+
|SensorId| Efficiency|
+--------+-----------+
| 1| 0.356|
| 2| 0.99|
| 3| 1.0|
| 4| 0.256|
| 5| 0.9|
+--------+-----------+
【问题讨论】:
-
你可以添加一些数据并说清楚,无法得到你的要求,你的意思是这不起作用吗?
when($"Efficiency" >= minEfficiency, "ok").otherwise("not ok") -
这个怎么样?
dataframe.withColumn("State", when(col("Efficiency") >= lit(minEfficiency), "ok").otherwise("not ok")你得到什么样的错误信息? -
@astro_asz,您使用 col() 的解决方案非常完美!请将您的评论添加到答案部分。
标签: scala apache-spark dataframe