首页 > 解决方案 > 如何加快 AWS Athena 分区重建?

问题描述

我有一个从特定 SaaS 应用程序中分区的存储桶:

s3:/nick-magical-bucket/events/year=2021/month=5/day=1/hour=12/minute=1/second=1/super-awesome.jsonl

如果我为它创建一个 AWS Glue 架构,我可以预览行,但是数据量太大而无法一次读取(比如 1TB)。

为了解决这个问题,我添加了分区。目的是能够至少按年+月进行分区,然后一次查询数据的子集,所以我的模式:

event_id: string
event_message: string
...
year: partition_key
month: partition_key
day: parition_key

添加分区键后,我会使用MSCK REPAIR TABLE mytable;它进行重建,但这需要很长时间。诚然,数据量非常大,但即使重建非常小的表也需要花费不合理的时间。例如,我通过选择表根将其范围缩小到一个小时的数据:

s3:/nick-magical-bucket/events/year=2021/month=5/day=1/hour=12/

然后将我的分区键设置为分钟,秒。数据总量为:

对象总数:4,800 总数据:201.7MB

然而,构建分区需要 8.5 分钟。这对应于每秒 9 个对象的速率。

用 115k 个对象重建一天至少需要 83 分钟(并且还在计数)。似乎有了现代 mapreduce 的奇迹,我们应该能够处理 115k 个对象而不会停下来。Athena 不使用它进行索引吗?我是在没有桨的小溪上吗?

标签: amazon-web-servicesamazon-s3

解决方案


推荐阅读