在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Spark SQL架构工作原理及流程解析,spark sql从shark发展而来,Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑。
Spark SQL兼容Hive,因为Spark SQL架构与Hive底层结构相似,Spark SQL复用了Hive提供的元数据仓库(Metastore)、HiveQL、用户自定义函数(UDF)以及序列化和反序列工具(SerDes),深入了解Spark SQL底层架构:
Spark SQL架构
Spark SQL架构与Hive架构相比除了把底层的MapReduce执行引擎更改为Spark还修改了Catalyst优化器,Spark SQL快速的计算效率得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给Spark SQL的Catalyst优化器进行负责和管理。
Catalyst优化器是一个新的可扩展的查询优化器,它是基于Scala函数式编程结构,Spark SQL开发工程师设计可扩展架构主要是为了在今后的版本迭代时,能够轻松地添加新的优化技术和功能,尤其是为了解决大数据生产环境中遇到的问题(例如,针对半结构化数据和高级数据分析),另外,Spark作为开源项目,外部开发人员可以针对项目需求自行扩展Catalyst优化器的功能。Spark SQL的工作原理图:
Spark SQL工作原理
Spark要想很好地支持SQL,就需要完成解析(Parser)、优化(Optimizer)、执行(Execution)三大过程。Catalyst优化器在执行计划生成和优化的工作时候,它离不开自己内部的五大组件,具体介绍如下所示。
Parse组件:该组件根据一定的语义规则(即第三方类库ANTLR)将SparkSql字符串解析为一个抽象语法树/AST。
Analyze组件:该组件会遍历整个AST,并对AST上的每个节点进行数据类型的绑定以及函数绑定,然后根据元数据信息Catalog对数据表中的字段进行解析。
Optimizer组件:该组件是Catalyst的核心,主要分为RBO和CBO两种优化策略,其中RBO是基于规则优化,CBO是基于代价优化。
SparkPlanner组件:优化后的逻辑执行计划OptimizedLogicalPlan依然是逻辑的,并不能被Spark系统理解,此时需要将OptimizedLogicalPlan转换成physical plan(物理计划)。
CostModel组件:主要根据过去的性能统计数据,选择最佳的物理执行计划。
在了解了上述组件的作用后,下面分步骤讲解Spark SQL工作流程。
1、在解析SQL语句之前,会创建SparkSession,涉及到表名、字段名称和字段类型的元数据都将保存在Catalog中;
2、当调用SparkSession的sql()方法时就会使用SparkSqlParser进行解析SQL语句,解析过程中使用的ANTLR进行词法解析和语法解析;
3、接着使用Analyzer分析器绑定逻辑计划,在该阶段,Analyzer会使用Analyzer Rules,并结合Catalog,对未绑定的逻辑计划进行解析,生成已绑定的逻辑计划;
4、然后Optimizer根据预先定义好的规则(RBO)对 Resolved Logical Plan 进行优化并生成 Optimized Logical Plan(最优逻辑计划);
5、接着使用SparkPlanner对优化后的逻辑计划进行转换,生成多个可以执行的物理计划Physical Plan;
6、 接着CBO优化策略会根据Cost Model算出每个Physical Plan的代价,并选取代价最小的 Physical Plan作为最终的Physical Plan;
7、最终使用QueryExecution执行物理计划,此时则调用SparkPlan的execute()方法,返回RDD。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
大数据Lambda架构概念及应用
Lambda Architecture 概念Mathan Marz的大作Big Data: Principles and best practices of scalable real-time data systems介绍了Lambda Architecture的概念,用于在大数据架构中,如何让real-time与batch job更好地结合起来,以达成对大数据的实时处理。
8964
2020-09-04 17:57:48
盘点五种主流的大数据计算框架
目前市面上有很多大数据框架,如批处理框架Hadoop,流处理框架Storm,以及混合处理型框架Flink和Spark,本文就对当前的分布式计算框架进行了系统的回顾与盘点。
14549
2019-07-02 19:04:03
掌握Hive架构需要学什么?
Hive是建立在Hadoop上的数据仓库基础构架,它提供了一系列的工具,可以用来进行数据提取转化加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类 SQL 查询语言,它允许熟悉SQL的用户查询数据。因此掌握Hive是学习大数据的必修课,那么掌握Hive架构需要学什么呢?本文将为大家讲述Hive的具体学习内容,下面是Hive视频教程的学习大纲:
4813
2020-05-11 18:05:41
Hadoop定义及其安全优势
Hadoop定义及其安全优势,Hadoop由协同运行、构建Hadoop框架的多个模块组成。MapReduce是一种出色的文本处理引擎,Hadoop支持Kerberos身份验证。
4614
2020-05-27 16:58:50
大数据开发离线计算框架知识点总结
大数据开发离线计算框架知识点总结,大数据在带来发展机遇的同时,也带来了新的挑战,催生了新技术的发展和旧技术的革新。大数据离线计算技术应用于静态数据的离线计算和处理,框架设计的初衷是为了解决大规模、非实时数据计算,更加关注整个计算框架的吞吐量。
5813
2020-07-16 16:41:14