我在S3中使用不同来源创建了实木复合地板文件。它们具有相同的架构。 1是使用Athena CTAS创建的。另一个使用AWS Glue / Spark创建。
Glue创建的文件如下:
雅典娜CTAS的外观如下:
我尝试将丢失的分区中的文件复制到另一个文件夹,然后使用Glue搜寻器,Glue可以检测到。但是,当所有内容放在一起时,似乎无法检测到这些分区。这是为什么?我是否需要使用一种方法处理所有数据才能正常工作?
答案 0 :(得分:1)
如果已将数据添加到新分区,则Glue应在架构匹配时检测到它。
您可以尝试使用Athena手动进行操作,看看是否可行。希望它至少会给您一个有用的错误。
ALTER TABLE orders ADD
PARTITION (dt = '2016-05-14', country = 'IN') LOCATION 's3://mystorage/path/to/INDIA_14_May_2016'
PARTITION (dt = '2016-05-15', country = 'IN') LOCATION 's3://mystorage/path/to/INDIA_15_May_2016';
来源:https://docs.aws.amazon.com/athena/latest/ug/alter-table-add-partition.html
您还可以尝试加载和打印两个分区的架构,看看是否有问题?
没有更多细节,例如有关如何实际进行分区的示例,我认为我无法提供更多帮助。
您应该尝试提出一个更可重复的示例。
答案 1 :(得分:0)
好的,我发现了问题。 2个主要问题
一个有用的技巧是使用每个分区的printSchema并进行比较。或检查AWS Glue数据目录表分区,然后查看其中的分区差异。