apache-spark-sql - Spark-SQL 中需要一个 TRUE 和 FALSE 列

标签 apache-spark-sql

我正在尝试为 Spark SQL DataFrame 编写多值过滤器。

我有:

val df: DataFrame      // my data
val field: String      // The field of interest
val values: Array[Any] // The allowed possible values

我正在尝试提出过滤器规范。

目前,我有:
val filter = values.map(value => df(field) === value)).reduce(_ || _)

但这在我传递空值列表的情况下并不可靠。为了涵盖这种情况,我想:
val filter = values.map(value => df(field) === value)).fold(falseColumn)(_ || _)

但我不知道如何指定 falseColumn。

有谁知道怎么做?

有没有更好的方法来编写这个过滤器? (如果是这样,我仍然需要有关如何获得 falseColumn 的答案 - 我需要一个 trueColumn 作为单独的部分)。

最佳答案

始终为真的列:

val trueColumn = lit(true)

始终为 false 的列:
val falseColumn = lit(false)

使用 lit(...)意味着这些将始终是有效的列,无论 DataFrame 包含哪些列。

关于apache-spark-sql - Spark-SQL 中需要一个 TRUE 和 FALSE 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42218572/

相关文章:

java - 如何从另一个数据框中选择列,其中这些列是不同数据框中列的值的列表

Scala Spark - 处理层次结构数据表

python - PySpark 无法访问使用 StringIndexer 添加的列

python - Spark : How to parse and transform json string from spark data frame rows

apache-spark - IN子句中的Spark SQL限制

apache-spark - 分解pyspark中的嵌套数组

apache-spark - 无法在 Spark 结构化流中转换 Kafka Json 数据

apache-spark - Spark 中 bigint 的兼容数据类型是什么?我们如何将 bigint 转换为 spark 兼容的数据类型?

python - PySpark:when子句中的多个条件

scala - 将 Spark Dataframes 的每一行转换为一个字符串,在 scala 中的每个列值之间有一个分隔符