美文网首页
spark sql 核心Catalyst 优化器

spark sql 核心Catalyst 优化器

作者: Eqo | 来源:发表于2022-06-15 20:25 被阅读0次

Spark SQL的核心是Catalyst优化器,对 SQL 或者DSL 代码解析生成逻辑计划,并对逻辑计划进行优化的查询优化器。

无论使用DSL还是SQL,构建Job的DAG图一样的,性能是一样的,原因在于SparkSQL中引擎:Catalyst:将SQL和DSL转换为相同逻辑计划(LogicalPlan)

什么是逻辑计划
就是我对我的sql 和 dsl 先不去执行, 先分析一下流程 要怎样执行,使用那些rdd ,然后进行优化

流程

image.png SparkSQL 内核(Catalyst优化器).png

SparkSQL Catalyst 运作原理:对sql 或者dsl 代码解析转换成逻辑计划,并对逻辑计划进行优化
逻辑计划分为三种
Unresolved Logical Plan :未分析逻辑计划 parse模块
logiocal plan : 逻辑计划 analyser模块
Optimized Logical Plan:优化后逻辑计划 optimized模块
过程:
1.经过parse模块将sql或者dsl 代码转换成解析逻辑计划(就是未分析的逻辑计划)
2.对为分析的逻辑计划经过 Analyser 模块读取catalog元数据进行分析 得到逻辑计划 logical plan
3.对逻辑计划使用规则优化(RBO) 得到优化后logical plan
RBO: Based-Rule Optimized

总结:
SparkSQL中由于Catalyst优化器存在,使得无论基于SQL还是DSL分析数据,性能都是一样的,并且底层做了很多优化

扩展:
SparkSQL中对SQL和DSL包含2步优化:
第1步优化:RBO基于规则Rule优化,对逻辑计划进行优化
第2步优化:CBO基于代价Cost优化,选择逻辑计划转换多个物理计划,以代价成本最低选择

RBO 优化和CBO优化。

  • 基于规则优化/Rule Based Optimizer/RBO
  • 基于代价优化/Cost Based Optimizer/CBO
image.png

相关文章

网友评论

      本文标题:spark sql 核心Catalyst 优化器

      本文链接:https://www.haomeiwen.com/subject/eunxvrtx.html