Catalyst揭秘 Day7 SQL转为RDD的具体实现

Catalyst揭秘 Day7

SQL转为RDD的具体实现

从技术角度,越底层和硬件偶尔越高,可动弹的空间越小,而越高层,可动用的智慧是更多。Catalyst就是个高层的智慧。sql

Catalyst已经逐渐变成了全部Spark框架的解析优化引擎,RDD是通用抽象的数据结果,RDD+Catalyst就构成了Spark的新底层。Catalyst是在RDD基础上进行封装,一旦优化了Catalyst,全部的子框架就都获得了优化。框架

执行过程

在昨天,咱们已经看到SparkPlan会经过prepareForExecution最终完成转换RDD的操做。
Snip20160728_9大数据

其实际触发须要一个action级别的操做,让咱们看一下collect这个action方法。
Snip20160728_18
其执行会分为几步:优化

  • 调用execute方法,返回RDD,会执行具体的doPrepare和doExecute。

Snip20160728_15

  • 这里咱们能够很是简单的看到一个真相,作了一个collect操做,这是RDD的方法

Snip20160728_16

  • 在外面调用了conveter方法。
    Snip20160728_17spa

  • 其核心就是把catalyst的类型变成Scala的类型,从而完成了数据的输出。
    Snip20160728_12ip

小结

至此,咱们已通过滤了数据从SQL输入到数据输出的完整过程。spark

语句流程:
SQL语句 --> 调用sqlparse --> unresolved logical plan
--> 调用analyzer --> resovled logical plan
--> 调用optimizer --> optimized logical plan
--> 调用sparkPlanner --> sparkPlan
--> 调用prepareForExecution --> prepared sparkplanio

执行流程:
sparkplan --> 调用execute --> RDD
--> 调用converter --> Scala数据基础

欲知后事如何,且听下回分解!

DT大数据天天晚上20:00YY频道现场授课频道68917580硬件

相关文章
相关标签/搜索