【问题标题】:Spark DataFrame duplicate column names while using mergeSchemaSpark DataFrame在使用mergeSchema时重复列名
【发布时间】:2018-05-25 04:22:35
【问题描述】:

我有一个巨大的 Spark DataFrame,我使用以下语句创建它

val df = sqlContext.read.option("mergeSchema", "true").parquet("parquet/partitions/path")

现在,当我尝试在上面的 DataFrame 上进行列重命名或选择操作时,它会说发现不明确的列,但出现以下异常

org.apache.spark.sql.AnalysisException: 参考 'Product_Type' 是 模棱两可,可能是 Product_Type#13、Product_Type#235

现在我看到了列,发现有两列 Product_TypeProduct_type 这似乎是相同的列,但由于架构随着时间的推移而合并,创建的一个字母大小写不同。现在我不介意保留重复的列,但 Spark sqlContext 出于某种原因不喜欢它。

我相信默认情况下spark.sql.caseSensitive 配置是真的,所以不知道为什么它会失败。我正在使用 Spark 1.5.2。我是 Spark 的新手。

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    默认情况下,spark.sql.caseSensitive 属性为false,因此在您的renameselect 语句之前,您应该将属性设置为true

    sqlContext.sql("set spark.sql.caseSensitive=true")
    

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 2016-02-20
      • 2016-06-06
      • 2016-02-22
      • 2018-10-24
      • 2019-08-17
      • 2016-01-06
      • 2019-02-23
      • 2018-06-26
      相关资源
      最近更新 更多