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