一文读懂 Spark SQL 运行流程

栏目: 数据库 · 发布时间: 4年前

云湖湖导读:

之前我们揭秘了华为云DLI背后的核心技术引擎Spark,了解了Spark的核心概念与架构。那么,究竟是什么让Spark既提供了通用优雅的接口,同时又具备强大的计算能力呢?要回答这个问题,就需要了解Spark SQL及其运行流程。今天,我们主要通过以下两点来解析:

1、Spark SQL是什么

2、Spark SQL核心——Catalyst查询编译器

更多优质内容请关注微信公众号“智能数据湖”

作者:王振华

责编:云湖湖

Spark SQL是什么

Spark SQL是Spark系统的核心组件,为来自不同数据源、不同格式的数据提供了结构化的视角,让用户可以使用 SQL 轻松的从数据中获取有价值的信息。

一文读懂 Spark SQL 运行流程

图 Spark生态

在Spark中,Spark SQL并不仅仅是狭隘的SQL,而是作为Spark程序优化、执行的核心组件。流计算、机器学习、图计算、深度学习等应用都可以转化为DataFrame/Dataset的API。这些API和通常的SQL一样,共享优化层、执行层,共享访问多种数据源的能力。可以说,Spark SQL是让Spark应用程序拥有高效性、高可容错性和丰富生态的“幕后英雄”。

一文读懂 Spark SQL 运行流程

图 Spark SQL的角色

Spark SQL核心——Catalyst查询编译器

Spark SQL的核心是一个叫做Catalyst的查询编译器,它将用户程序中的SQL/Dataset/DataFrame经过一系列操作,最终转化为Spark系统中执行的RDD。

Catalyst中的框架如下图所示,它有以下几个重要组成部分:

一文读懂 Spark SQL 运行流程

兼容ANSI SQL 2003标准和HiveQL。将SQL/Dataset/DataFrame转化成一棵未经解析(Unresolved)的树,在Spark中称为逻辑计划(Logical Plan),它是用户程序的一种抽象。

Analyzer

利用目录(Catalog)中的信息,对Parser中生成的树进行解析。Analyzer有一系列规则(Rule)组成,每个规则负责某项检查或者转换操作,如解析SQL中的表名、列名,同时判断它们是否存在。通过Analyzer,我们可以得到解析后的逻辑计划。

Optimizer

对解析完的逻辑计划进行树结构的优化,以获得更高的执行效率。优化过程也是通过一系列的规则来完成,常用的规则如谓词下推(Predicate Pushdown)、列裁剪(Column Pruning)、连接重排序(Join Reordering)等。此外,Spark SQL中还有一个基于成本的优化器(Cost-based Optmizer),是由DLI内部开发并贡献给开源社区的重要组件。该优化器可以基于数据分布情况,自动生成最优的计划。

Planner

将优化后的逻辑计划转化成物理执行计划(Physical Plan)。由一系列的策略(Strategy)组成,每个策略将某个逻辑算子转化成对应的物理执行算子,并最终变成RDD的具体操作。注意在转化过程中,一个逻辑算子可能对应多个物理算子的实现,如join可以实现成SortMergeJoin或者BroadcastHashJoin,这时候需要基于成本模型(Cost Model)来选择较优的算子。上面提到的基于成本的优化器在这个选择过程中也能起到关键的作用。

经过上述的一整个流程,就完成了从用户编写的SQL语句(或DataFrame/Dataset),到Spark内部RDD的具体操作逻辑的转化。

整个Catalyst框架拥有良好的可扩展性,开发者可以根据不同的需求,灵活地添加自己的语法、解析规则、优化规则和转换策略。

总结

经过上面的介绍,我们可以看到, SparkSQL Spark 强大的计算和处理能力的使能者。 DLI 服务在全面兼容 Spark 能力的同时,还提供了丰富的数据源对接能力。通过 DLI 服务,用户可以通过 SQL 轻松访问 OBS DWS CloudTable Elasticsearch 等多个服务中的数据,在降低使用门槛的同时,避免了数据搬迁,从而实现在一个数据湖中的高效信息探索。

▼  每周二18点,不见不散 

延伸阅读

Spark SQL在HBase的查询性能优化

地理时空大数据概论

《数据赋能,如何精细化保障企业大数据安全》

一文读懂 Spark SQL 运行流程

喜欢这篇文章吗?点一下「好看」再走:point_down:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入React技术栈

深入React技术栈

陈屹 / 人民邮电出版社 / 2016-11-1 / CNY 79.00

全面讲述React技术栈的第一本原创图书,pure render专栏主创倾力打造 覆盖React、Flux、Redux及可视化,帮助开发者在实践中深入理解技术和源码 前端组件化主流解决方案,一本书玩转React“全家桶” 本书讲解了非常多的内容,不仅介绍了面向普通用户的API、应用架构和周边工具,还深入介绍了底层实现。此外,本书非常重视实战,每一节都有实际的例子,细节丰富。我从这......一起来看看 《深入React技术栈》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具