AWS Athena 上的架构不匹配

Schema mismatch on AWS Athena

提问人:Hassaan Murtaza 提问时间:11/9/2023 最后编辑:Hassaan Murtaza 更新时间:11/10/2023 访问量:28

问:

我在 Athena 中有一个表,它每天使用胶水爬虫进行更新,使用存储在 s3 上的 parquet 文件,使用 id 和 date 分区。 此表每天接收数据,因此每天都会创建一个新的日期分区,但最近数据摄取导致架构发生变化,我在尝试在 Athena 中查询时收到以下错误。

HIVE_PARTITION_SCHEMA_MISMATCH:表架构和分区架构不匹配。这些类型不兼容,不能强制。 表“test”中的列“column1”声明为 type 'structsubcolumn1:映射<字符串,字符串,subcolumn2:structsubcolumn3:字符串,subcolumn4:字符串,subcolumn5:string,subcolumn6:string,subcolumn7:string,subcolumn8:string,subcolumn9:array<string,subcolumn10:boolean,subcolumn11:string,subcolumn12:string>', 但是分区“id=abc/dt=2023-09-07”将子列“collection_event_metadata”声明为类型 'structSubColumn1:数组<struct<键:字符串,值:字符串>,subcolumn2:structsubcolumn3:struct<value:string,subcolumn4:structvalue:string,subcolumn5:structvalue:string,subcolumn6:structvalue:string,subcolumn7:structvalue:string,subcolumn8:structvalue:string>,subcolumn9:array,subcolumn10:boolean,subcolumn11:string,subcolumn12:string>'

上面的错误仅适用于 1 列,此错误发生在表中的所有列上

经过进一步调查,我发现由于源架构的更改而发生了不匹配,一些最初是“columnname”:string的列现在转换为“columnname”:structvalue:string。并且值也已转换。 我试图更改爬虫以不更新表定义和我可以尝试的所有可能的排列,但没有任何效果。 我能想到的唯一解决方案是转换现有数据以匹配较新的架构,或者转换新架构以匹配现有数据。 只是想得到一些意见,我还能做些什么来解决这个问题吗?

python amazon-web-services 架构 amazon-athena 数据工程

评论

0赞 Guy 11/11/2023
docs.aws.amazon.com/athena/latest/ug/......

答: 暂无答案