我可以在写入之前使用 Athena / Presto 对 table 进行排序吗?

Can I use Athena / Presto to sort a table before writing?

我想将日志存档为 Parquet 格式。在写table之前,我想按c列排序,这样每个Parquet文件只会有c的小范围。当查询在列 c 上包含 WHERE 子句(通过谓词下推)时,这将允许 Athena / Presto 有效地扫描 table。

但是,我不清楚是否可以使用 Athena 或 Presto 对整个 table 进行排序。我需要一种分布式排序——而不是在单个节点上进行的排序——因为数据集太大,无法放在单个节点上。这种可能吗?如果是这样,我该如何调用它?

Presto 支持 distributed sort since 0.206。 Athena 是 currently based on Presto 0.172,我不知道他们是否向后移植了此功能。

所以你的选择是

Athena 引擎版本 2(2020 年 11 月 13 日发布)似乎现在支持 Presto 的分布式 ORDER BY 功能:

https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html#:~:text=engine%20version%202.-,Query%20Performance,-Bucketed%20tables%20%E2%80%93%20Improved

ORDER BY – ORDER BY operations are now distributed by default, enabling larger ORDER BY clauses to be used.