我正在使用Spark应用程序(使用Scala),我有一个包含多个值的List。我想使用此列表为我的DataFrame编写where
子句,并仅选择元组的子集。例如,我的列表包含' value1',' value2'和' value3'。我想写这样的东西:
mydf.where($"col1" === "value1" || $"col1" === "value2" || $"col1" === "value3)
如何以编程方式执行此操作导致列表包含许多值?
答案 0 :(得分:5)
您可以将值列表映射到"过滤器列表" (使用类型Column
),并通过在每两个过滤器上应用||
运算符将此列表缩减为单个过滤器:
val possibleValues = Seq("value1", "value2", "value3")
val result = mydf.where(possibleValues.map($"col1" === _).reduce(_ || _))