我想对Athena表进行更改,这是使用ALTER TABLE
语句无法实现的。这意味着删除当前表并将其替换为新表。
在删除当前表并创建新表之间,任何查询该表的人都会收到错误消息。很好。
问题是创建表后,查询表的任何人都将看不到任何行,直到运行MSCK REPAIR
或ADD PARTITION
。这不好,因为它有可能不被注意并引起下游问题。
我希望避免在“维护窗口”期间进行这些更改。是否可以通过某种方式原子地将分区与create语句一起添加?
我已经研究过使用这些表顶部的视图并公开这些视图,但是如果可能的话,我希望避免使用多余的层。
答案 0 :(得分:1)
据我所知,您不能同时创建表和添加分区,也不能重命名表(这是另一种选择,双缓冲样式)。您可以做的是直接使用Glue API创建表和分区,这将最大程度地减少表不存在分区的时间。在CreateTable后跟BatchCreatePartition的情况下,表中没有分区的窗口将尽可能地短。