AWS Athena 如何从 s3 加载 10GB/s?我已经通过 c6gn.16xlarge

问题描述

在 AWS Athena 上运行此查询时,它设法查询了 63GB Traders.csv 文件

SELECT * FROM Trades WHERE TraderID = 1234567

Tt 需要 6.81 秒,这样做扫描 63.82GB(几乎正好是 Trades.csv 文件的大小,所以进行全表扫描)。

令我震惊的是从 s3 中提取数据的速度令人难以置信。似乎 AWS Athena 的策略是使用一个令人难以置信的巨大盒子和大量 RAM 和令人难以置信的 s3 加载能力来解决缺乏索引的问题(尽管在标准 sql 数据库上,您将在 TraderID 上拥有一个索引并加载数百万倍的数据).

但在我的实验中,我只设法从 S3 中读取了这些数据(这仍然令人印象深刻):

InstanceType Mb/s 网卡千兆
t2.2xlarge 113
t3.2xlarge 140 最多 5
c5n.2xlarge 160 最多 25
c6gn.16xlarge 230 100

(那是兆字节而不是兆比特)

我在 eu-west-1 上为 s3 使用内部 VPC 端点。任何人都有让 s3 快速加载的任何技巧/提示?有没有人从 s3 获得超过 1GB/s 的读取速度?这甚至可能吗?

解决方法

似乎 AWS Athena 的策略是使用令人难以置信的海量 带有大量内存的盒子

不,它更像是许多小盒子,而不是一个大盒子。 Athena 正在同时在多个服务器上并行运行您的查询。据我所知,具体细节并未在任何地方发布,但它们在文档中非常清楚地表明您的查询是并行运行的。