博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Catalyst揭秘 Day7 SQL转为RDD的具体实现
阅读量:6284 次
发布时间:2019-06-22

本文共 888 字,大约阅读时间需要 2 分钟。

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

转载于:https://www.cnblogs.com/dt-zhw/p/5716008.html

你可能感兴趣的文章
elk定时清理日志
查看>>
java Socket编程
查看>>
我的Android进阶之旅------>Android关于ImageSpan和SpannableString的初步了解
查看>>
【Python学习 】Python获取命令行参数的方法
查看>>
Seleniumz中 dr.quit()和dr.close()的区别
查看>>
openwrt生成备份文件
查看>>
hue忘记管理员登陆密码
查看>>
scrum敏捷开发的几款工具
查看>>
精通CSS高级Web标准解决方案(4、对链接应用样式)
查看>>
html笔记篇-Sublime、Markdown
查看>>
生成器
查看>>
spark监控入门
查看>>
mysql加锁处理分析
查看>>
ceph0.94安装
查看>>
css里各个元素的书写顺序
查看>>
【JOISC2018|2019】【20190622】minerals
查看>>
笔试算法题(20):寻找丑数 & 打印1到N位的所有的数
查看>>
朋友们请珍重自己的身体
查看>>
Android Handler机制简介
查看>>
2012/10/8——假期结束了
查看>>