Spark SQL架构分析

企业动态 Spark
Spark SQL的查询优化是Catalyst,其基于Scala语言开发,可以灵活利用Scala原生的语言特性方便地扩展功能,奠定了Spark SQL的发展空间。

Spark SQL与传统DBMS的查询优化器+执行器的架构较为类似,只不过其执行器是在分布式环境中实现,并采用Spark作为执行引擎。

Spark SQL的查询优化是Catalyst,其基于Scala语言开发,可以灵活利用Scala原生的语言特性方便地扩展功能,奠定了Spark SQL的发展空间。

  1. Catalyst将SQL翻译成最终的执行计划,并在这个过程中进行查询优化。
  2. 这里和传统不太一样的地方就在于,SQL经过查询优化器最终转换为可执行的查询计划,传统DB就可以执行这个查询计划了,但spark不同。
  3. Spark SQL***执行还是会在Spark内将执行计划转换为Spark的有向无环图DAG再执行。

架构分析

Catalyst的整体架构

Catalyst的整体架构

从图8-2中可以看到整个Catalyst是Spark SQL的调度核心,遵循传统数据库的查询解析步骤,对SQL进行解析,转换为逻辑查询计划和物理查询计划,最终转换为Spark的DAG执行

Catalyst的执行流程

 

 

  1. SqlParser将SQL语句转换为逻辑查询计划
  2. Analyzer对逻辑查询计划进行属性和关系关联检验
  3. 之后Optimizer通过逻辑查询优化将逻辑查询计划转换为优化的逻辑查询计划
  4. QueryPlanner将优化的逻辑查询计划转换为物理查询计划
  5. prepareForExecution调整数据分布
  6. ***将物理查询计划转换为执行计划进入Spark执行任务。

【本文为51CTO专栏作者“王森丰”的原创稿件,转载请注明出处】

责任编辑:赵宁宁 来源: 神算子
相关推荐

2016-12-14 19:04:16

Spark SQL优化

2021-06-06 19:03:25

SQL大数据Spark

2016-09-04 14:00:31

Spark

2015-09-23 09:24:56

spark数据分析

2020-05-27 11:20:37

HadoopSpark大数据

2016-12-20 09:47:38

Apache SparLambda架构

2016-07-01 14:37:01

SparkSQL

2019-06-19 16:01:14

Spark数据分析SparkSQL

2012-02-13 14:41:50

Titanium架构分析

2012-06-21 09:50:53

ERP架构

2012-08-30 14:33:03

Spark

2019-07-17 13:25:03

SparkHadoop架构

2016-11-15 14:07:28

Apache SparLambdaHadoop

2021-11-11 10:48:35

架构运维技术

2009-09-08 13:16:01

Linq to SQL

2016-03-01 11:11:38

ParquetSpark SQL列式存储

2016-06-17 12:31:10

Spark SQL数据处理Spark

2009-09-09 18:03:47

LINQ to SQL

2009-09-15 10:46:04

LINQ to SQL

2019-10-17 09:25:56

Spark StreaPVUV
点赞
收藏

51CTO技术栈公众号