根据这个AWS Forum Thread,有没有人知道如何使用AWS Glue创建一个AWS Athena表,其分区包含不同的模式(在这种情况下,表模式中的列的不同子集)?
目前,当我在此数据上运行抓取工具然后在Athena中进行查询时,我收到错误'HIVE_PARTITION_SCHEMA_MISMATCH'
我的用例是:
如果我要手动编写模式,我可以做得很好,因为只有一个表模式,而JSON文件中缺少的密钥将被视为Null。
提前致谢!
答案 0 :(得分:29)
答案 1 :(得分:2)
答案 2 :(得分:0)
这也解决了我的问题! 如果有人需要使用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"
}
}
答案 3 :(得分:0)
尽管在搜寻器的配置中选择了Update all new and existing partitions with metadata from the table.
,但偶尔仍然无法为所有分区设置预期的参数(特别是jsonPath
并不是从表的属性继承的)。
如https://docs.aws.amazon.com/athena/latest/ug/updates-and-partitions.html中的建议,“删除导致错误的分区并重新创建”有助于
删除有问题的分区后,g胶爬虫在以下运行中正确地重新创建了它们