在 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 列