Scala Spark SQL筛选多个字段

Scala Spark SQL筛选多个字段,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,Scala API中过滤多列的正确语法是什么?如果我想做这样的事情: dataFrame.filter($"col01" === "something" && $"col02" === "something else") 或 编辑: 这就是我的原始代码的样子。一切都是一串串的 df.select($"userID" as "user", $"itemID" as "item", $"quantity" cast("int"), $"price" cast("float"), $

Scala API中过滤多列的正确语法是什么?如果我想做这样的事情:

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")

我想我明白问题所在了。由于某些原因,spark不允许两个!='在同一个过滤器中的。需要了解Spark源代码中如何定义过滤器

现在,为了让代码正常工作,您可以使用它来进行筛选

df.filter(col("item").notEqual("") && col("group").notEqual("-1"))
或者在同一语句中使用两个筛选器

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

此链接有助于使用不同的spark方法。

看起来不错。您是否遇到任何问题?如果它不起作用,您可能只是缺少导入sqlContext.implicits.\u,其中
sqlContext
sqlContext
HiveContext
的一个实例。我得到的是“value&&不是字符串的成员”。解决方法是将每条语句都用括号括起来。@gstvolvr以上两个过滤器都适用于我。为了进一步调试,如果您可以发布一些以前的代码或示例数据,这将有所帮助。@dheee我发布了一个编辑。如果有帮助,请告诉我。嗨@dheee?你知道这两个选项的性能是否相同吗?@servatj我没有看到我这方面的性能有任何差异。!==类内列已弃用,并且!==不具有与==相同的优先级。所以我建议使用=!=相反,@user3252097您可以在这里发布您的查询吗。
df.filter($"item" !== "").filter($"group" !== "-1").select(....)