首页 > 解决方案 > 处理不需要/旧/陈旧 AWS Athena 分区的正确方法

问题描述

由于 Athena 的服务限制(每个表 20,000 个分区),我们遇到了需要弄清楚如何处理陈旧 AWS Athena 分区的情况。

假设我们只想拥有一个表并每天在那里添加许多分区,这些分区引用位于 S3 上的一些日志的类似时间戳的路径(例如:)/foo_bucket/logs/year=2019/month=03/day=11/hour=20。我们发现这种方法可以让我们在大约 2 年内达到分区限制。之后,我们要清理旧日志和与之关联的分区。

问题:

  1. 如果删除关联的 S3 路径,分区元数据会发生什么情况?此 S3 存储桶会自动删除旧对象。分区是否也会被自动删除,还是会引用不存在的 S3 路径?
  2. 当我们在 S3 自动删除旧对象之前达到每个表的分区限制时会发生什么?Athena 会删除旧的分区元数据吗?我知道删除分区不会触及 S3 对象数据(链接)。

谢谢!

标签: amazon-web-servicesamazon-s3amazon-athena

解决方案


问题一:

由于元数据和数据在 AWS Athena 中完全未链接,您需要调用基本上说“嘿,刷新我的表分区列表”的命令,即MSCK REPAIR TABLE https://docs.aws.amazon.com/athena/最新/ug/msck-repair-table.html

问题2:

我认为当 Athena 尝试在元存储中添加新分区时,您会遇到错误,因为旧分区元数据没有被删除。

反馈:

也许将旧内容合并到粒度较小的分区中并不是一个坏主意。例如,您可以保留过去 3 到 4 个月的天粒度。任何比这更早的东西都可以每月存储。这将使您可以在表格中保留更多内容。

我希望它有帮助:)


推荐阅读