我可以在写入之前使用 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,我不知道他们是否向后移植了此功能。
所以你的选择是
- 获取最新的 Presto @ https://trino.io/download.html
- 从 Starburst 轻松在 AWS 上部署 Presto (https://www.starburstdata.com/presto-aws-cloud/)(免责声明:我来自 Starburst)
- 使用捆绑在 EMR 上的 Presto(我不知道它是如何配置的,但可能默认情况下仍启用分布式排序)
Athena 引擎版本 2(2020 年 11 月 13 日发布)似乎现在支持 Presto 的分布式 ORDER BY
功能:
ORDER BY – ORDER BY operations are now distributed by default, enabling larger ORDER BY clauses to be used.
我想将日志存档为 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,我不知道他们是否向后移植了此功能。
所以你的选择是
- 获取最新的 Presto @ https://trino.io/download.html
- 从 Starburst 轻松在 AWS 上部署 Presto (https://www.starburstdata.com/presto-aws-cloud/)(免责声明:我来自 Starburst)
- 使用捆绑在 EMR 上的 Presto(我不知道它是如何配置的,但可能默认情况下仍启用分布式排序)
Athena 引擎版本 2(2020 年 11 月 13 日发布)似乎现在支持 Presto 的分布式 ORDER BY
功能:
ORDER BY – ORDER BY operations are now distributed by default, enabling larger ORDER BY clauses to be used.