zoukankan      html  css  js  c++  java
  • Catalyst揭秘 Day7 SQL转为RDD的具体实现

    Catalyst揭秘 Day7

    SQL转为RDD的具体实现

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

    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_17

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

    小结

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

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

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

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

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

  • 相关阅读:
    从 0 配置 webpack(一)
    Redux
    React Hooks 全解(二)
    日本人要把核污水排进大海,我突然想到几个问题
    突然发现,我的代码还花花绿绿的,挺好看的
    Ghidra ,改道吧,我也准备改道这玩意了
    语音控制?这,看起来很眼熟。
    winafl 工具的编译
    关于 TX 的 WeGame 的一点疑问
    新年的第一个随笔,随便写写吧
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5716008.html
Copyright © 2011-2022 走看看