内容提要
Databricks Runtime的AQE是一种性能特性,可以在查询执行期间使用运行时统计信息不断重新优化批处理查询。从Databricks Runtime 13.1开始,使用ForeachBatch Sink的实时流查询也将利用AQE进行动态重新优化。AQE可以解决静态查询计划和估计统计数据的限制,通过利用ForeachBatch Sink的运行时统计信息进行动态优化。AQE在无状态操作符上的效果最好,可以应用于ForeachBatch可调用函数中的微批DataFrame。AQE在流中的应用可以提高Delta MERGE等常见流式用例的性能。
关键要点
-
Databricks Runtime中的自适应查询执行(AQE)是一种性能特性,可以在查询执行期间使用运行时统计信息不断重新优化批处理查询。
-
从Databricks Runtime 13.1开始,使用ForeachBatch Sink的实时流查询也将利用AQE进行动态重新优化。
-
静态查询计划和估计统计数据的限制导致流查询性能下降,AQE可以解决这些问题。
-
AQE利用ForeachBatch Sink的运行时统计信息进行动态优化,适用于无状态操作符。
-
AQE在流中的应用可以提高Delta MERGE等常见流式用例的性能。
-
AQE的动态优化在每个微批次上独立触发,适应数据特征的变化。
-
在Photon启用的集群中,AQE可以为无状态查询提供更广泛的逻辑和物理优化。
-
AQE在ForeachBatch Sink内的转换应用效果最佳,推荐将连接操作移入ForeachBatch函数中以提高AQE覆盖率。
-
AQE可以显著提高无状态基准查询的性能,速度提升范围为1.2倍到16倍。
-
在Runtime 13.1中,AQE将在非Photon集群中默认启用,Photon集群将在Runtime 13.2中启用AQE。