能否通过Presto降低无法扩容的Redshift集群负载?
方案可行性判断
- 该方案完全可行,是Redshift集群负载过高且暂无法扩容场景下的主流卸荷方案,合理使用可显著降低Redshift的计算压力。
Presto Redshift Connector 运算下推逻辑
Presto不会默认将完整查询全部下推到Redshift执行,具体运算分配逻辑如下:
- 仅将过滤条件、列裁剪、简单单表聚合、排序limit这类轻量运算下推到Redshift执行,尽可能减少需要跨集群拉取的数据量
- 复杂多表关联、跨数据源运算、复杂开窗函数、嵌套聚合这类重计算逻辑,会在Redshift完成前置数据裁剪后,将最小必要数据集拉取到Presto侧完成运算,不会占用Redshift的计算资源
- 你可以执行
EXPLAIN <你的查询语句>查看具体查询的执行计划,明确各阶段运算的执行节点
落地优化建议
- 优先转移大表关联、多维度复杂聚合类查询到Presto运行,这类查询是Redshift高负载的核心来源,转移后的卸荷效果最明显
- 提前为Redshift涉及的表配置合适的分区键、排序键,确保下推的过滤条件可以最大程度裁剪扫描的数据范围,进一步降低Redshift的IO压力和数据拉取开销
- 不要转移无过滤条件的全表扫描类查询到Presto,这类查询会拉取全量表数据,反而会额外增加Redshift的IO负载
内容的提问来源于stack exchange,提问作者Ivan Rubanau
相关产品推荐
相关产品推荐

