在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")
答案 0 :(得分:22)
我想我知道问题是什么。出于某种原因,spark不允许两个!='在同一个 过滤器 中。需要了解如何在Spark源代码中定义 过滤器 。
现在让您的代码正常工作,您可以使用它来执行过滤器
df.filter(col("item").notEqual("") && col("group").notEqual("-1"))
或在同一声明中使用两个过滤器
df.filter($"item" !== "").filter($"group" !== "-1").select(....)
这个链接here可以帮助解决不同的火花方法。