教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Spark3.x中Adaptive Query Execution的自适应查询

更新时间:2022年02月21日18时11分 来源:传智教育 浏览次数:

由于缺乏或者不准确的数据统计信息(元数据)和对成本的错误估算(执行计划调度)导致生成的初始执行计划不理想在Spark3.x版本提供Adaptive Query Execution自适应查询技术通过在”运行时”对查询执行计划进行优化, 允许Planner在运行时执行可选计划,这些可选计划将会基于运行时数据统计进行动态优化, 从而提高性能。

Adaptive Query Execution AQE主要提供了三个自适应优化:

  • 动态合并 Shuffle Partitions
  • 动态调整Join策略
  • 动态优化倾斜Join(Skew Joins)

1.动态调整Join策略Dynamically switching join strategies

此优化可以在一定程度上避免由于缺少统计信息或着错误估计大小(当然也可能两种情况同时存在),而导致执行计划性能不佳的情况。这种自适应优化可以在运行时sort merge join转换成broadcast hash join,从而进一步提升性能。

     

2.动态调整Join策略Dynamically switching join strategies

此优化可以在一定程度上避免由于缺少统计信息或着错误估计大小(当然也可能两种情况同时存在),而导致执行计划性能不佳的情况。这种自适应优化可以在运行时sort merge join转换成broadcast hash join,从而进一步提升性能。

3.动态优化倾斜Join

skew joins可能导致负载的极端不平衡,并严重降低性能。在AQE从shuffle文件统计信息中检测到任何倾斜后,它可以将倾斜的分区分割成更小的分区,并将它们与另一侧的相应分区连接起来。这种优化可以并行化倾斜处理,获得更好的整体性能。


触发条件: 1. 分区大小> spark.sql.adaptive.skewJoin.skewedPartitionFactor (default=10) * "median partition size(中位数分区大小)"

2. 分区大小> spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes (default = 256MB)。

总结:

1. AQE的开启通过: spark.sql.adaptive.enabled 设置为true开启。

2. AQE是自动化优化机制, 无需我们设置复杂的参数调整, 开启AQE符合条件即可自动化应用AQE优化。

3. AQE带来了极大的SparkSQL性能提升。

总结
0 分享到:
和我们在线交谈!