配置单元\u分区\u架构\u不匹配-不同列之间

5uzkadbs  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(279)

在查询表时,我发现不同列之间的分区不匹配。请注意,不匹配是针对不同的列报告的!
我得到的错误是,
配置单元分区架构不匹配:表架构和分区架构不匹配。类型不兼容,无法强制。表“heat.backup”中的列“direction”声明为类型“string”,但分区“partition\u 0=2020/partition\u 1=08/partition\u 2=07/partition\u 3=13”将列“scan\u enabled”声明为类型“boolean”。
如您所见,错误是针对完全不同的列“direction”和“scan\u enabled”引发的。我看到过同样的错误,即表元数据中的数据类型是一种类型,但分区元数据中的数据类型对于同一列是不同的,这是有意义的。但在本例中,将一列的数据类型与完全不同的列的数据类型进行比较。
查询是针对aws athena表运行的,其中底层数据是json。
你知道吗?

o4tp2gmn

o4tp2gmn1#

发生此问题的原因是表和分区的元数据中不存在类型不同的列。这是因为报告分区的架构与表架构不同。
为了确认同一问题,两个boto3/(您选择的sdk)api调用get\u table()和get\u partition()。这会告诉你这两者的区别。
请参阅本文档讨论的是同一问题,即分区中的模式与表模式不同。
如文档中所述,解决此问题的方法是删除导致错误的分区并重新创建它。如果您使用的是粘合爬虫,则需要在爬虫设置中启用“使用表中的元数据更新所有新分区和现有分区”。

相关问题