在 Spark 中,我无法按现有列进行过滤

Posted

技术标签:

【中文标题】在 Spark 中,我无法按现有列进行过滤【英文标题】:In Spark I am not able to filter by existing column 【发布时间】:2019-09-30 10:24:46 【问题描述】:

我正在尝试使用 spark 按数据框中的一列进行过滤。但是 spark 抛出错误,

Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve 'Inv. Pty' given input columns: [Pstng Date, Name 1, Inv. Pty, Year]

invDF.filter(col("Inv. Pty") === "2001075").show()

【问题讨论】:

您能否使用 printSchema 打印数据框的架构并用它更新问题! 【参考方案1】:

倒着试试这个`

invDF.filter(col("`Inv. Pty`") === "2001075").show()

【讨论】:

【参考方案2】:

问题是 Spark 假定带有“点”的列作为结构列。 为了解决这个问题,您需要使用反引号“`”。这应该有效:

invDF.filter(col("`Inv. Pty`") === "2001075").show()

【讨论】:

【参考方案3】:

不确定,但给定输入列:[Pstng Date, Name 1, Inv. Pty, Year] 列有一个额外的空间 Inv。 Pty,可能是这个问题。

【讨论】:

以上是关于在 Spark 中,我无法按现有列进行过滤的主要内容,如果未能解决你的问题,请参考以下文章

无法过滤存储在 spark 2.2.0 数据框中的 CSV 列

无法按 DataTable 中的列显示过滤器

无分区列性能的 Spark 下推过滤器

需要使用迭代多个列的过滤器值过滤 Spark 数据帧

spark:模式更改——如果存在,则转换和过滤列上的数据框;如果没有就不要

如何使用 Java 在 Dataset Spark 中过滤列并删除行