Apache spark Spark-使用列名在数据帧上应用筛选器/映射无效

Apache spark Spark-使用列名在数据帧上应用筛选器/映射无效,apache-spark,dataset,spark-dataframe,Apache Spark,Dataset,Spark Dataframe,抱歉,如果这是重复的,但是,指出的解决方案不适用于我。很可能我在这里遗漏了一些基本的东西。我有一个如下所示的数据帧: inputDF: org.apache.spark.sql.DataFrame = [ts: string, id: string ... 20 more fields] 我正在尝试根据名为“state”(类型为String)的字段(在Scala中)过滤一些感兴趣的“行”: 但是,这给了我一个错误: <console>:143: error: overloaded

抱歉,如果这是重复的,但是,指出的解决方案不适用于我。很可能我在这里遗漏了一些基本的东西。我有一个如下所示的数据帧:

inputDF: org.apache.spark.sql.DataFrame = [ts: string, id: string ... 20 more fields]
我正在尝试根据名为“state”(类型为String)的字段(在Scala中)过滤一些感兴趣的“行”:

但是,这给了我一个错误:

<console>:143: error: overloaded method value filter with alternatives:
  (func: org.apache.spark.api.java.function.FilterFunction[org.apache.spark.sql.Row])org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] <and>
  (func: org.apache.spark.sql.Row => Boolean)org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] <and>
  (conditionExpr: String)org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] <and>
  (condition: org.apache.spark.sql.Column)org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]
 cannot be applied to (Boolean)
       inputDF.filter(inputDF("connState") == "BALANCED").show()
:143:错误:重载的方法值筛选器,带有替代项:

(func:org.apache.spark.api.java.function.FilterFunction[org.apache.spark.sql.Row])org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]但无法找出错误所在。

看起来我需要使用===而不是==

inputDF.filter(inputDF("state") === "BALANCED").show()

正在执行我想要的操作。

因为
inputDF(“state”)
返回一个
org.apache.spark.sql.Column
,并且
==
未为
Column
数据类型定义<代码> >==/CODE >定义为平等。同意S.K.,此外,如果您希望避免冗长并重写“InDutf”,请考虑使用以下符号->代码> IpPutdF.FLTER($“状态”== =“平衡”)。
inputDF.filter(inputDF("state") === "BALANCED").show()