开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:扩展_Catalyst 优化器_查看计划】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/690/detail/12041
扩展_Catalyst 优化器_查看计划
Catalyst 优化器_查看计划
catalyst 的执行过程第一步,catalyst 把 SQL 解析解析为一棵语法树,接下来把类型信息添加到语法树当中,进行优化,接下来生成完物理计划,还会再走到一个成本模型,对整个树再次进行一个优化,整个的 catalyst 不止生成一个物理计划,会生成多个物理计划,通过成本模型去选择一个更好的物理计划,就是整个优化过程。
了解整个优化过程以后,我们需要先去运行一段代码来去看一看这个过程是怎么样的,先打开我们的 IDEA,然后先拷贝一些代码,比如,拷贝一下 person,进入到我们的这个黑窗口当中,我们在这儿输入 past,把第一段代码先移过来,再继续向下拷贝第二段代码,拷贝我们的这一段生成这个表的这一段,把它拷过来以后,我们去执行,拷过来的这两段代码。
执行完以后,我们还要再考虑一下 person,进来输入 past,先拷贝 person,拷贝完 person,切回来,拷贝这段代码。
我们再来拷贝一下执行这样的一个代码,执行完,我们就直接生成一个 result df,就可以直接使用 sparkSQL 来进行一段查询,写一个最基础最简单的,Selectname from person 创建,接下来就可以使用 where,age 大于十岁,age 小于 20 岁,接下来去执行这样的一行代码,我们可以通过 result df 来去查看一下 result df 所有的 DF 来去查看一下他的逻辑计划,可以使用 query execution,运行一下 execution,通过 query execution 就可以看到生成的这段东西,其实就是我们所说的逻辑计划。
首先第一点,使用 past logic plan 是生成了一颗 AST 树,然后分析这棵树,分析这棵树的情况,分析这棵树的这个步骤,就是在添加一些结构信息过去,对于这个地方,直接是 age 大于 10 小于 20,变成了 age#大于 10age#小于 20,第三步就生成了一个 optimized logical plan 就是优化过的这个逻辑计划。
接下来我们再通过 RESULT2 的 result df ,使用一个叫做 X man 来进行物理计划的查看,执行一下,发现这是 physical plan,物理执行计划,就只是了解怎么去运行,这是整个的优化过程。
这时不仅可以在这儿看到,也可以打开,浏览器在这个 web UI 上,也可以看到这个内容,刷新一下,看到有一行 SQL,点击 SQL,能看到有一个好的展示,能看到这个系统,我们去让他看一下这个接口,我们可以选 result df ,然后去收集一下,收集完以后,我们要去执行这段系统,执行了才能看见最后的这个效果,再切回我们的浏览器当中刷新一下,看到一个 SQL 的执行,点击一下 cpu 的执行,这是整个的这棵树的生成,以及物理计划是什么样子的,这就是整个计划。