临海建设局官方网站,如何做餐饮的网站,成都新站软件快速排名,网站建设知识问答逻辑计划阶段在整个流程中起着承前启后的作用。在此阶段#xff0c;字符串形态的SQL语句转换为树结构形态的逻辑算子树#xff0c;SQL中所包含的各种处理逻辑#xff08;过滤、剪裁等#xff09;和数据信息都会被整合在逻辑算子树的不同节点中。逻辑计划本质上是一种中间过…逻辑计划阶段在整个流程中起着承前启后的作用。在此阶段字符串形态的SQL语句转换为树结构形态的逻辑算子树SQL中所包含的各种处理逻辑过滤、剪裁等和数据信息都会被整合在逻辑算子树的不同节点中。逻辑计划本质上是一种中间过程表示与Spark平台无关后续阶段会进一步将其映射为可执行的物理计划。
Spark SQL逻辑计划在实现层面被定义为LogicalPlan类。从SQL语句经过SparkSqlParser解析生成Unresolved LogicalPlan到最终优化成为Optim ized LogicalPlan这个流程主要经过3个阶段如下图所示。这3个阶段分别产生Unresolved LogicalPlan、Analyzed LogicalPlan和Optimized LogicalPlan其中Optimized LogicalPlan传递到下一个阶段用于物理执行计划的生成。 具体来讲这3个阶段所完成的工作分别如下。 1由SparkSqlParser中的AstBuilder执行节点访问将语法树的各种Context节点转换成对应的LogicalPlan节点从而成为一棵未解析的逻辑算子树Unresolved LogicalPlan此时的逻辑算子树是最初形态不包含数据信息与列信息等。 2由Analyzer将一系列的规则作用在Unresolved LogicalPlan上对树上的节点绑定各种数据信息生成解析后的逻辑算子树Analyzed LogicalPlan。 3由Spark SQL中的优化器Optimizer将一系列优化规则作用到上一步生成的逻辑算子树中在确保结果正确的前提下改写其中的低效结构生成优化后的逻辑算子树Optimized LogicalPlan。