使用 Spark 基于成本的优化器 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Spark 基于成本的优化器

Spark 版本 2.09 及更高版本可以使用基于成本的优化器 (CBO)。国会预算办公室根据各种表统计信息为查询选择最便宜的执行计划。CBO 会尝试在 CPU 利用率和 I/O 方面优化查询的执行,从而尽快返回。但是,在大多数情况下,通常不存在数据统计,尤其是在统计数据收集比数据处理更昂贵的情况下。即使有统计数据,它们也可能已经过时了。以下是使用 CBO 的最佳实践:

  • 收集在联接、筛选和分组依据等操作中使用的所有列的统计信息。这有助于优化器做出更好的决策。ANALYZE TABLE用于收集统计数据。

  • 如果数据变化迅速,请增加统计数据收集的频率。过时的统计数据可能会导致计划未得到优化。

  • 从默认 CBO 参数开始,只有在需要时才对其进行调整。积极的优化可以增加运行时间。

  • 通过强制执行优化的计划并比较绩效,验证国会预算办公室是否在选择最佳计划。启用优化器日志记录以比较计划。

  • 为了获得更好的优化,请将 CBO 与分区、存储桶和数据倾斜提示结合使用。分区可以帮助 CBO 进行扩展。

  • 要尽早检测计划回归,请在启用 CBO 后持续监控查询性能。