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

  • 相关阅读:
    链家大数据多维分析引擎实践
    html 读取变量
    django 分配字典给前台模板
    django将数组传递给前台模板
    fetachone和fetchall
    django捕获url中的值
    django 控制页面跳转
    MySQL的前缀索引及Oracle的类似实现
    django url捕获
    django 页面调用方法
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5716008.html
Copyright © 2011-2022 走看看