活动链接:SPARK中文峰会7月4日(二)|Ray On Spark
演讲嘉宾简介:王道远,阿里巴巴技术专家
以下内容根据演讲视频以及PPT整理而成。
点击链接观看精彩回放:
https://developer.aliyun.com/live/43188
一、自适应查询执行AQE简介
关于自适应查询执行,在数据库领域早有充分研究。在Spark社区,最早在Spark 1.6版本就已经提出发展自适应执行(Adaptive Query Execution,下文简称AQE);到了Spark 2.x时代,Intel大数据团队进行了相应的原型开发和实践;到了Spark 3.0时代,Databricks和Intel一起为社区贡献了新的AQE。
什么是AQE呢?简单来说就是根据在运行时统计信息(runtime statistics)在查询执行的过程中进行动态(Dynamic)的查询优化。那么我们为什么需要AQE呢?在Spark 2.x时代,为了选择最佳执行计划,我们引入了CBO(Cost-based optimization),但是在一些场景下,效果非常不好,缺点明显,比如:
统计信息过期或者缺失导致估计错误;
收集统计信息代价较大(比如column histograms);;
某些谓词使用自定义UDF导致无法预估;
手动指定执行hint跟不上数据变化。
而在Spark 3.0时代,AQE完全基于精确的运行时统计信息进