Spark SQL过滤多个字段

gst*_*lvr 15 scala apache-spark apache-spark-sql

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

dataFrame.filter($"col01" === "something" && $"col02" === "something else")
Run Code Online (Sandbox Code Playgroud)

要么

dataFrame.filter($"col01" === "something" || $"col02" === "something else") 
Run Code Online (Sandbox Code Playgroud)

编辑:

这就是我的原始代码.一切都以字符串形式出现.

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")
Run Code Online (Sandbox Code Playgroud)

dhe*_*eee 23

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

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

df.filter(col("item").notEqual("") && col("group").notEqual("-1"))
Run Code Online (Sandbox Code Playgroud)

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

df.filter($"item" !== "").filter($"group" !== "-1").select(....)
Run Code Online (Sandbox Code Playgroud)

此链接在这里可以用不同的火花方法帮助.

  • 不推荐使用Column类中的!==,并且!==的优先级与===的优先级不同。所以我决定使用=!=代替。 (2认同)