Spark修炼之道(高级篇)——Spark源码阅读:第十二节 Spark SQL 处理流程分析

  • 时间:
  • 浏览:1
  • 来源:大发彩神app—大发彩神8苹果版

整体流程图如下:

其中parseSql(sqlText)方式生成相应的LogicalPlan得到,该方式源码如下:

(5)

当调用DataFrame的collect等方式时,便会触发执行executedPlan

(1)sql方式返回DataFrame

(3)val qe = sqlContext.executePlan(logicalPlan) 返回QueryExecution, sqlContext.executePlan方式源码如下:

还可不都里能调用results.queryExecution方式查看,代码如下:

下面的代码演示了通过Case Class进行表Schema定义的例子:

(2)但会 调用DataFrame的apply方式

QueryExecution类中表达了Spark执行SQL的主要工作流程,具体如下

还可不都里能看到,apply方式参数有一另一另还还有一个,分别是SQLContext和LogicalPlan,调用的是DataFrame的构造方式,具体源码如下:

作者:周志湖

ddlParser对象定义如下:

(4) 但会 调用DataFrame的主构造器完成DataFrame的构造

还可不都里能看到,SQL的执行流程为

1.Parsed Logical Plan:LogicalPlan

2.Analyzed Logical Plan:

lazy val analyzed: LogicalPlan = sqlContext.analyzer.execute(logical)

3.Optimized Logical Plan:lazy val optimizedPlan: LogicalPlan = sqlContext.optimizer.execute(withCachedData)

4. Physical Plan:lazy val executedPlan: SparkPlan = sqlContext.prepareForExecution.execute(sparkPlan)

之类: