Spark - Spark SQL中RBO, CBO与AQE简单介绍

Spark SQL的优化包括RBO(基于规则优化)、CBO(基于代价优化)和AQE(适应性查询执行)。RBO通过预定义规则减少计算数据量和重复计算;CBO计算所有可能物理计划的代价并选择最小代价执行;而AQE则是在运行时根据统计信息动态调整优化查询计划,包括自动分区合并、Join策略调整和倾斜处理等功能。
摘要由CSDN通过智能技术生成

Spark SQL核心是Catalyst, Catalyst执行流程主要分4个阶段, 语句解析, 逻辑计划与优化, 物理计划与优化, 代码生成
前三个阶段都由Catalyst负责, 其中, 逻辑计划的优化采用RBO思路, 物理计划的优化采用CBO思路

RBO (Rule Based Optimization)

基于规则优化, 通过一系列预定好的规则(Rule)对逻辑计划进行等价转换, 以提高查询效率
两个主要思路

  • 减少参与计算的数据量
  • 降低重复计算的代价

常用的规则都基于经验指定, 可覆盖大部分查询场景, 且方便扩展, 缺点是不够灵活
常用规则例如

  • 常量折叠(ConstantFolding)
    把纯常量运算表达式预先转化, 比如把1+2转化为3.0, 消除不必要的重复计算

  • 谓词下推(PushdownPredicate)
    最常见的用于减少参与计算的数据量的方法
    谓词, where条件, join on中的过滤条件
    将SQL语句中的谓词逻辑尽量提前执行, 参与join的数据量大大减少, 使得join操作速度大大提高

  • 列裁剪(ColumnPruning)
    在扫描表时, 只筛选出符合后续逻辑计划的最小列集合, 节省掉扫描全部列的资源
    如果使用的Parquet,ORC等列式存储格式持久化的, 效率会更高

CBO (Cost Based Optimization)

基于代价优化
CBO优化主要在物理计划层, 原理是计算所有可能的物理计划的代价, 并挑选出代价最小的计划
充分考

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值