Spark SQL过滤多个字段

时间:2016-04-27 14:57:43

标签: scala apache-spark apache-spark-sql

在Scala API中对多个列进行过滤的相关语法是什么?如果我想做这样的事情:

dataFrame.filter($"col01" === "something" && $"col02" === "something else")

dataFrame.filter($"col01" === "something" || $"col02" === "something else") 

编辑:

这是我原始代码的样子。一切都以字符串形式出现。

df.select($"userID" as "user", $"itemID" as "item", $"quantity" cast("int"), $"price" cast("float"), $"discount" cast ("float"), sqlf.substring($"datetime", 0, 10) as "date", $"group")
  .filter($"item" !== "" && $"group" !== "-1")

1 个答案:

答案 0 :(得分:22)

我想我知道问题是什么。出于某种原因,spark不允许两个!='在同一个 过滤器 中。需要了解如何在Spark源代码中定义 过滤器

现在让您的代码正常工作,您可以使用它来执行过滤器

df.filter(col("item").notEqual("") && col("group").notEqual("-1"))

或在同一声明中使用两个过滤器

df.filter($"item" !== "").filter($"group" !== "-1").select(....)

这个链接here可以帮助解决不同的火花方法。