欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Spark - Spark SQL 中的 RBO, CBO 与 AQE 简单介绍-RBO(基于规则的优化)

最编程 2024-04-03 09:55:43
...

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

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

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

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

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

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