amazon-web-services - 如何加快 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 不使用它进行索引吗?我是在没有桨的小溪上吗?
解决方案
推荐阅读
- jspdf - 如何使用 jsPDF 和 jSPDF autoTable 在特定单元格中绘制圆角矩形?
- c++ - 即使 QFilterKey 匹配,QRenderPassFilter 也会隐藏平面网格
- javascript - 查看 Apple Pay 价格
- react-native - 反应导航不响应单击按钮
- java - 如何为文件处理问题编写代码
- .net - .net cad:从另一个图纸导入尺寸样式
- java - 使用 Spring Data Jpa 时如何使用大型脚本查询数据?
- ruby-on-rails - Rails i18n gem 从非英语语言环境的错误消息中排除属性名称
- javascript - 使用正则表达式测试一个数字是否出现“x”次
- elasticsearch - 启用 _source 后需要有关索引大小增加的信息