彩神大发排列五_神彩大发排列五官方 - 彩神大发排列五,神彩大发排列五官方是新浪网最重要的频道之一,24小时滚动报道国内、国际及社会新闻。每日编发新闻数以万计。

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

  • 时间:
  • 浏览:3

(2)过后调用DataFrame的apply土办法

可不都可否看完,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)

ddlParser对象定义如下:

类似:

(3)val qe = sqlContext.executePlan(logicalPlan) 返回QueryExecution, sqlContext.executePlan土办法 源码如下:

可不都可否调用results.queryExecution土办法 查看,代码如下:

可不都可否看完,apply土办法 参数有另另一个 ,分别是SQLContext和LogicalPlan,调用的是DataFrame的构造土办法 ,具体源码如下:

(1)sql土办法 返回DataFrame

(4) 过后调用DataFrame的主构造器完成DataFrame的构造

整体流程图如下:

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

(5)

当调用DataFrame的collect等土办法 时,便会触发执行executedPlan

作者:周志湖

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

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