【问题标题】:HIVE_PARTITION_SCHEMA_MISMATCH - Between different columnsHIVE_PARTITION_SCHEMA_MISMATCH - 不同列之间
【发布时间】:2020-08-07 14:26:38
【问题描述】:

在查询表时,我发现不同列之间的分区不匹配。请注意,根据不同的列报告不匹配!

我得到的错误是,

HIVE_PARTITION_SCHEMA_MISMATCH:表之间存在不匹配 和分区模式。类型不兼容,不能 胁迫。表 'heat.backup' 中的列 'direction' 声明为 键入“字符串”,但分区 'partition_0=2020/partition_1=08/partition_2=07/partition_3=13' 将列“scan_enabled”声明为“布尔”类型。

如您所见,错误是针对完全不同的列“direction”和“scan_enabled”引发的。我看到同样的错误,说表元数据中的数据类型是一种类型,但分区元数据中的数据类型对于 SAME 列是不同的,这是有道理的。但是在这种情况下,将一列的数据类型与完全不同的列的数据类型进行比较。

查询针对 AWS Athena 表运行,其中基础数据为 JSON。

有什么想法吗?

【问题讨论】:

    标签: sql json hive amazon-athena


    【解决方案1】:

    之所以会出现此问题,是因为表和分区的元数据中不同的列类型不同。这是因为上报分区的schema和表schema不一样。

    为了确认相同的问题,两个 boto3/(您选择的 SDK)API 调用 get_table() 和 get_partition()。这将告诉您这两者之间的区别。

    请参考这个doc 讨论相同的问题,与表模式相比,分区中的模式不同。

    如文档中所述,解决此问题的方法是删除导致错误的分区并重新创建它。如果您使用的是 Glue 爬虫,则需要在爬虫设置中启用“Update all new and existing partitions with metadata from the table”。

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      相关资源
      最近更新 更多