如何创建分区具有不同列的 AWS Glue table? ('HIVE_PARTITION_SCHEMA_MISMATCH')

How to create AWS Glue table where partitions have different columns? ('HIVE_PARTITION_SCHEMA_MISMATCH')

根据这个 AWS Forum Thread,有谁知道如何使用 AWS Glue 创建一个 AWS Athena table,其分区包含不同的模式(在本例中来自 table 架构)?

目前,当我 运行 爬虫通过此数据然后在 Athena 中进行查询时,我收到错误 'HIVE_PARTITION_SCHEMA_MISMATCH'

我的用例是:

如果我手动编写一个模式,我可以做得很好,因为只有一个 table 模式,JSON 文件中缺少的键将被视为空值。

提前致谢!

我遇到了同样的问题,通过配置爬虫来更新 table 预先存在的分区的元数据解决了这个问题:

这对我有帮助。为其他人发布图像以防 link 丢失

它也解决了我的问题! 如果有人需要使用 Terraform 提供此配置爬虫,那么我是这样做的:

resource "aws_glue_crawler" "crawler-s3-rawdata" {
  database_name = "my_glue_database"
  name          = "my_crawler"
  role          = "my_iam_role.arn"

  configuration = <<EOF
{
   "Version": 1.0,
   "CrawlerOutput": {
      "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }
   }
}
EOF
  s3_target {
    path = "s3://mybucket"
  }
}

尽管在爬虫的配置中选择了 Update all new and existing partitions with metadata from the table.,它仍然偶尔无法为所有分区设置预期的参数(特别是 jsonPath 不是从 table 的属性继承的就我而言)。

https://docs.aws.amazon.com/athena/latest/ug/updates-and-partitions.html 中的建议,“删除导致错误的分区并重新创建它”有帮助

删除有问题的分区后,将爬虫 re-created 正确地粘贴到以下 运行