全误差
HIVE_PARTITION_SCHEMA_MISMATCH: There is a mismatch between the table and partition schemas.
The types are incompatible and cannot be coerced. The column 'ein_verification' in table 'dynamodb_etl_dev.widget_user_snapshots' is declared as type
'struct<status:string,unlocktimestamp:bigint,message:string,lastverifiedtimestamp:bigint,datelastverified:bigint>', but partition 'snapshot_time=2022-08-03T18%3A41' declared column 'ein_verification' as type
'struct<status:string,unlocktimestamp:bigint,lastverifiedtimestamp:bigint,message:string,datelastverified:bigint>'.
看起来唯一的区别是order消息:string,播后验证时间戳:bigint是相反的,但它们在其他情况下是相同的。
我知道有一些设置可以用于更新表定义和使用表中的元数据更新现有分区,但我想了解为什么会发生这种情况,并可能完全阻止这种情况发生。
而且,看起来雅典娜并没有试图查询最新的分区,因为在这个s3桶中有一个新的分区,带有一个最近的时间戳。我被困在如何程序上,因为我可以运行这个任务一次,并得到一个分区,它的工作很好。但是,每次我第二次运行它时,我就会得到结构不正常的错误。
发布于 2022-08-04 20:06:06
找到解析错误here的答案。特别是,有一个关于如何在地形上这样做的评论,它帮助我使它运行起来。
https://stackoverflow.com/questions/73240894
复制相似问题