Spark SQL的查询优化是Catalyst,其基于Scala语言开发,可以灵活利用Scala原生的语言特性方便地扩展功能,奠定了Spark SQL的发展空间。
Spark SQL与传统DBMS的查询优化器+履行器的架构较为相似,只不过其履行器是在散布式环境中完成,并选用Spark作为履行引擎。
Spark SQL的查询优化是Catalyst,其根据Scala言语开发,能够灵敏使用Scala原生的言语特性方便地扩展功用,奠定了Spark SQL的开展空间。
- Catalyst将SQL翻译成终究的履行方案,并在这个过程中进行查询优化。
- 这儿和传统不太相同的当地就在于,SQL经过查询优化器终究转换为可履行的查询方案,传统DB就能够履行这个查询方案了,但Spark不同。
- Spark SQL***履行仍是会在Spark内将履行方案转换为Spark的有向无环图DAG再履行。
Catalyst的全体架构
从图8-2中能够看到整个Catalyst是Spark SQL的调度中心,遵从传统数据库的查询解析过程,对SQL进行解析,转换为逻辑查询方案和物理查询方案,终究转换为Spark的DAG履行
Catalyst的履行流程
- SqlParser将SQL句子转换为逻辑查询方案
- Analyzer对逻辑查询方案进行特点和联系相关查验
- 之后Optimizer经过逻辑查询优化将逻辑查询方案转换为优化的逻辑查询方案
- QueryPlanner将优化的逻辑查询方案转换为物理查询方案
- prepareForExecution调整数据散布
- ***将物理查询方案转换为履行方案进入Spark履行任务。
【本文为51CTO专栏作者“王森丰”的原创稿件,转载请注明出处】
转载请说明出处
知优网 » Spark SQL架构剖析(spark sql开发)
知优网 » Spark SQL架构剖析(spark sql开发)