scala - 如果集合中存在列,则过滤 spark/scala 数据框

标签 scala apache-spark filter spark-dataframe

我正在使用 Spark 1.4.0,这是我到目前为止所拥有的:

data.filter($"myColumn".in(lit("A"), lit("B"), lit("C"), ...))

函数lit将文字转换为列。

理想情况下,我会将我的 A、B、C 放在一个 Set 中并像这样检查:
val validValues = Set("A", "B", "C", ...)
data.filter($"myColumn".in(validValues))

什么是正确的语法?有没有替代的简洁解决方案?

最佳答案

Spark 1.4 或更高版本:

val validValues = Set("A", "B", "C").map(lit(_))
data.filter($"myColumn".in(validValues.toSeq: _*))

Spark 1.5 或更新版本:
val validValues = Set("A", "B", "C")
data.filter($"myColumn".isin(validValues.toSeq: _*))

关于scala - 如果集合中存在列,则过滤 spark/scala 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39234360/

相关文章:

scala - 为什么 sbt 报告 "Error: Could not retrieve sbt 0.13.11"?

scala - 如何隐式获取Class

Scala - 将整数列表映射到接收 java.lang.Object 的方法

filter - 在 jMeter 中输入

asp.net-mvc - ActionMethodSelectorAttribute + AllowHtml

scala - 通过在Scala中使用TypeTag实现多态返回类型

python - 设置 PYSPARK_SUBMIT_ARGS 后 PySpark 在 Jupyter 中失败

csv - Spark读取多个CSV文件,每个文件一个分区

scala - 结构化的 Spark 流 leftOuter join 的行为类似于 inner join

angular - 有没有办法将 Angular 数据表与每列 "angular way"的过滤器一起使用?