我正在使用 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/