whole stage codegen 是spark 2.0 以后引入的新特性,所以在最后单独把这一块拿出来讲一下。 相关背景可以看spark官方的jira:https://...
终于到了最后一步执行了: 最关键的两个函数便是 doPrepare和 doExecute了。 还是以上一章的sql语句为例,其最终生成的sparkplan为: 看一下Sort...
上一章生成的Physical Plan 还需要经过prepareForExecution这一步,做执行前的一些准备工作,代码如下: 看到上面的 foldLeft 是不是很熟悉...
Optimizer得到的是最终的 Logical Plan,Planner 将Logical Plan 转化为 Physical Plan。 planner执行plan方法:...
得到 Resolved Logical Plan 后,将进入优化阶段。后续执行逻辑如下: 下面看一下Optimizer: 看到Optimizer也是继承自RuleExecut...
根据上一节所讲,Analyzer最关键的代码便是rule的实现了。 先整体看一下rule的集合: 下面的rule会根据不同的SessionState而不同(BaseSessi...
本章将介绍analyzer 结合 catalog 进行绑定,生成 Resolved Logical Plan. 上一步得到的 Unresolved Logical Plan将...
接着上一节,继续讲。还是以 SELECT A.B FROM A 为例。 查看AstBuilder逻辑,遍历访问,最终会访问到querySpecificat...
接着上一节,我们看一下antlr4。 antlr可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器。ANTLR—Another Tool for...
接着上一篇文章,本章将介绍 第1步:sql 语句经过 SqlParser 解析成 Unresolved Logical Plan 当我们执行: ...
spark sql 的前身是shark,类似于 hive, 用户可以基于spark引擎使用sql语句对数据进行分析,而不用去编写程序代码。 上图很好的展示...
spark应用调试(idea 环境) spark shell可以比较方便的分步执行调试spark应用程序,但有时候不是很方便。下面介绍一种直接在idea中调试spark程序的...
源码项目调试 在源代码项目对源码修改后用idea直接进行调试工作 clone源码到本地并编译 git clone git@gi...
源码 将项目源码clone源码到本地 项目地址:https://github.com/apache/spark 编译 spark项目同时支持maven和sbt两种方式,以ma...
mark一下,今天开始在简书写作