如何基于Spark中的DataFrame的多个值编写条件

时间:2016-06-20 16:09:59

标签: scala apache-spark

我正在使用Spark应用程序(使用Scala),我有一个包含多个值的List。我想使用此列表为我的DataFrame编写where子句,并仅选择元组的子集。例如,我的列表包含' value1',' value2'和' value3'。我想写这样的东西:

mydf.where($"col1" === "value1" || $"col1" === "value2" || $"col1" === "value3)

如何以编程方式执行此操作导致列表包含许多值?

1 个答案:

答案 0 :(得分:5)

您可以将值列表映射到"过滤器列表" (使用类型Column),并通过在每两个过滤器上应用||运算符将此列表缩减为单个过滤器:

val possibleValues = Seq("value1", "value2", "value3")
val result = mydf.where(possibleValues.map($"col1" === _).reduce(_ || _))