Spark SQL概念学习系列之Spark SQL 架构分析(四)
2016-08-01 11:12
344 查看
不多说,直接上干货!
Spark SQL 与传统 DBMS 的查询优化器 + 执行器的架构较为类似,只不过其执行器是在分布式环境中实现,并采用的 Spark 作为执行引擎。 Spark SQL 的查询优化是Catalyst,其基于 Scala 语言开发,可以灵活利用 Scala 原生的语言特性很方便进行功能扩展,奠定了 Spark SQL 的发展空间。 Catalyst 将 SQL 语言翻译成最终的执行计划,并在这个过程中进行查询优化。这里和传统不太一样的地方就在于, SQL 经过查询优化器最终转换为可执行的查询计划是一个查询树,传统 DB 就可以执行这个查询计划了。而 Spark SQL 最后执行还是会在 Spark 内将这棵执行计划树转换为 Spark 的有向无环图DAG 再执行。
1. [b]Catalyst 架构及执行流程分析[/b]
下图1所示是Catalyst 的整体架构。
图 1 Spark SQL 查询引擎 Catalyst 的架构
从图1 中可以看到整个 Catalyst 是 Spark SQL 的调度核心,遵循传统数据库的查询解析步骤,对 SQL 进行解析,转换为逻辑查询计划、 物理查询计划,最终转换为
Spark 的 DAG 后再执行。图 2为 Catalyst 的执行流程。
SqlParser 将 SQL 语句转换为逻辑查询计划, Analyzer 对逻辑查询计划进行属性和关系关联检验,之后 Optimizer 通过逻辑查询优化将逻辑查询计划转换为优化的逻辑查询计划,
QueryPlanner 将优化的逻辑查询计划转换为物理查询计划, prepareForExecution 调整数据分布,最后将物理查询计划转换为执行计划进入Spark 执行任务。
图2 Catalyst 的执行流程
欢迎大家,加入我的微信公众号:大数据躺过的坑 免费给分享
同时,大家可以关注我的个人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/
人生苦短,我愿分享。本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。
目前研究领域:大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。 语言涉及:Java、Scala、Python、Shell、Linux等 。同时还涉及平常所使用的手机、电脑和互联网上的使用技巧、问题和实用软件。 只要你一直关注和呆在群里,每天必须有收获
以及对应本平台的QQ群:161156071(大数据躺过的坑)
相关文章推荐
- Spark系列(四)整体架构分析
- Spark SQL概念学习系列之Spark SQL基本原理
- Spark SQL概念学习系列之为什么使用 Spark SQL?(二)
- Spark SQL概念学习系列之如何使用 Spark SQL(六)
- 【Spark SQL 源码分析系列文章】
- Spark SQL 源代码分析系列
- Spark系列(四)整体架构分析
- OLAP OLTP presto、druid、sparkSQL、kylin的对比分析,如性能、架构等,有什么异同?
- Spark SQL概念学习系列之Spark SQL 优化策略(五)
- Spark SQL 源码分析系列文章
- Spark SQL 源码分析系列文章
- Spark SQL概念学习系列之分布式SQL引擎
- BlogEngine.Net架构与源代码分析系列part11:开发扩展(下)——自定义Theme
- BlogEngine.Net架构与源代码分析系列part1:开篇介绍
- 【处理器体系架构系列】ARM流水线关键技术分析与代码优化
- SQL Azure架构分析概述
- 转载:大型网站架构分析系列技术文档合集
- BlogEngine.Net架构与源代码分析系列part15:总结篇
- SQL Azure架构分析概述
- Quartz.NET 架构与源代码分析系列 part 2 :Job 作业