gpt4 book ai didi

scala - 数据帧错误: "overloaded method value filter with alternatives"

转载 作者:行者123 更新时间:2023-12-02 05:50:47 24 4
gpt4 key购买 nike

我正在尝试使用下面的代码过滤掉空或空字符串的行来创建一个新的数据框:

val df1 = df.filter(df("fieldA") != "").cache()

然后我收到以下错误:

 <console>:32: error: overloaded method value filter with alternatives:
(conditionExpr: String)org.apache.spark.sql.DataFrame <and>
(condition: org.apache.spark.sql.Column)org.apache.spark.sql.DataFrame
cannot be applied to (Boolean)
val df1 = df.filter(df("fieldA") != "").cache()
^

有谁知道我在这里错过了什么?谢谢!

最佳答案

在 Scala 中,为了逐列比较相等性,您应该使用 ===!== (或 =!= 在 Spark 2.0+ 中):

val df1 = df.filter(df("fieldA") !== "").cache()

或者,您可以使用表达式:

val df1 = df.filter("fieldA != ''").cache()

发生错误是因为每个 Scala 对象中都存在 != 运算符,并且它用于比较对象,始终返回 bool 值。但是,filter 函数需要 Column 对象或字符串中的表达式,因此 Column 类中有 !== 运算符,它返回另一个列,然后可以按照您想要的方式使用。

要查看列可用的所有操作,Column scaladoc非常有用。另外,还有functions包。

关于scala - 数据帧错误: "overloaded method value filter with alternatives",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37334915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com