Spark SQL的执行流程是怎么样的?

提问者:帅平 问题分类:面试刷题
Spark SQL的执行流程是怎么样的?
4 个回答
宁愿短发披肩
宁愿短发披肩
Spark SQL的核心是Catalyst查询编译器, 它将用户程序中的SQL/Dataset/DataFrame经过一系列操作,最终转化为Spark系统中执行的RDD。整体执行流程如下图:
发布于:3个月前 (01-22) IP属地:四川省
风起时べ思念浓
风起时べ思念浓
sparksql执行流程介绍如下:
1、Parser阶段:parser简单说就是将SQL字符串切分成一个一个的Token, 再根据一些语义规则解析成一颗未经解析(Unresolved)的语法树。Parser模块是使用ANTLR实现的。 在这个过程中, 会判断SQL语句是否符合规范,比如select from where 等这些关键字是否写对。此阶段不会对表名,表字段进行检查。
2、Analyzer阶段: 利用 Catalog 中的信息,对Parser中生成的语法树进行解析。 Analyzer由一系列规则(Rule)组成,每个规则负责某项检查或者转换操作, 如解析SQL中的表名、列名, 同时判断它们是否存在, 对树上的每个节点进行数据类型绑定及函数绑定。 通过Analyzer,可以得到解析后的逻辑计划, 逻辑计划形如from table -> filter column -> select 形式的树结构。
3、Optimizer阶段: 对解析后的逻辑计划进行树结构的优化,以获得更高的执行效率。优化过程也是通过一系列的规则来完成,常用的规则如谓词下推、列裁剪、连接重排序, 常量累加等。 Optimizer优化模块是整个Catalyst的核心, 优化器分为基于规则的优化(RBO)和基于代价优化(CBO)两种。
4、Planner阶段: 此时逻辑执行计划已经得到了比较完善的优化。然而,逻辑执行计划依然没办法真正执行,他们只是逻辑上可行, 还需将逻辑计划转化为物理计划。 SparkPlanner由一系列的策略(Strategy)组成,每个策略将某个逻辑算子转化成对应的物理执行算子,并最终变成RDD的具体操作。在转化过程中,Spark会根据不同场景为该算子制定了不同的算法策略, 比如join 算子, 有BroadcastHashJoin、ShuffleHashJoin以及SortMergejoin等。物理执行计划实际上就是在这些具体实现中挑选一个耗时最小的算法实现,。
5、执行物理计划: 最后依据最优的物理执行计划,将SQL转化为DAG,以RDD形式进行操作。
发布于:3个月前 (01-22) IP属地:四川省
与你无关
与你无关
sparksql执行流程介绍如下:
1、Parser阶段:parser简单说就是将SQL字符串切分成一个一个的Token, 再根据一些语义规则解析成一颗未经解析(Unresolved)的语法树。Parser模块是使用ANTLR实现的。 在这个过程中, 会判断SQL语句是否符合规范,比如select from where 等这些关键字是否写对。此阶段不会对表名,表字段进行检查。
2、Analyzer阶段: 利用 Catalog 中的信息,对Parser中生成的语法树进行解析。 Analyzer由一系列规则(Rule)组成,每个规则负责某项检查或者转换操作, 如解析SQL中的表名、列名, 同时判断它们是否存在, 对树上的每个节点进行数据类型绑定及函数绑定。 通过Analyzer,可以得到解析后的逻辑计划, 逻辑计划形如from table -> filter column -> select 形式的树结构。
3、Optimizer阶段: 对解析后的逻辑计划进行树结构的优化,以获得更高的执行效率。优化过程也是通过一系列的规则来完成,常用的规则如谓词下推、列裁剪、连接重排序, 常量累加等。 Optimizer优化模块是整个Catalyst的核心, 优化器分为基于规则的优化(RBO)和基于代价优化(CBO)两种。
4、Planner阶段: 此时逻辑执行计划已经得到了比较完善的优化。然而,逻辑执行计划依然没办法真正执行,他们只是逻辑上可行, 还需将逻辑计划转化为物理计划。 SparkPlanner由一系列的策略(Strategy)组成,每个策略将某个逻辑算子转化成对应的物理执行算子,并最终变成RDD的具体操作。在转化过程中,Spark会根据不同场景为该算子制定了不同的算法策略, 比如join 算子, 有BroadcastHashJoin、ShuffleHashJoin以及SortMergejoin等。物理执行计划实际上就是在这些具体实现中挑选一个耗时最小的算法实现,。
5、执行物理计划: 最后依据最优的物理执行计划,将SQL转化为DAG,以RDD形式进行操作。
上诉第四点的流程如下:
1、SparkPlanner对优化后的逻辑计划进行转换,实际上是生成了多个可以执行的物理计划Physical Plan。
2、接着基于代价优化(CBO)的策略会根据Cost Model算出每个Physical Plan的代价,并选取代价最小的 Physical Plan作为最终的Physical Plan。
发布于:3个月前 (01-22) IP属地:四川省
我来回答