温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,那还是同样的,我们接下来呢,对着我们的文档,将我们刚才所讲的内容呢,做一个回顾啊,跟前面这个地方一样啊,呃,也就是说现在呢,我们要回顾的内容就是说将hi。解析成为我们的抽象语法数,然后接下来对抽象语法数进一步加工,变成操作数,对操作数进行逻辑优化之后呢,把它翻译成任务数,再对任务数进行物理执行计划的优化,是不是OK,好,那在这个当中呢,第一个啊,进到compel这个方法当中,执行一个comp方法,在这个当中呢,Comp方法里边它有两大核心步骤,一个是解析我们的抽象语法术,另外一个就是对抽象语法术进一步进行一个加工处理,对不对?好,那接下来呢,看一下如何生成我们的抽象语法数的,哎,调用pass pass pass pass还是一样的,一直在调用pass,最后呢,调用到我们这个叫pass drive。
01:03
这个类里边的pass方法,这里边呢,做了两件事情,第一个构建我们的词法解仪器啊,然后呢,将关键词替换为token,这个的源码当中呢,我们都找到了啊,然后接下来。最终根据我们的什么解析器,创建了个解析器token啊,对token进行解析,得到我们的ast数啊,Ast树是这样的一个内容啊,那ast树呢,长这个样子,等会第八个的时候,我们可以稍微看一看这个树啊,一层一层的层次非常多啊,这个就比较麻烦,如果说你真的要对着一个呃,抽象语法数把这个图画出来,其实还是挺麻烦的一件事情啊,可以告诉大家好,那接下来呢,对ast数进一步解析,这个当中呢,我们反复强调的一直在说的就这么几步,Ast数转化为。操作数啊,逻辑执行计划,然后对逻辑执行计划进行逻辑优化,接下来把它变成任务数,对任务数呢,进行物理优化啊好,那当然对于物理优化的过程当中呢,其实我们看到在T子或者说Spark引擎是可以的,如果是imagine,它并没有写它的一个实现是不是啊,好,那没关系,因为它默认的,呃,从最开始的版本就是翻译成这个MR任务的,所以呢,对于MR到了物理层面的一个优化来说,它就不需要做什么了啊这也很好理解,所以在逻辑执行优化的过程当中呢,我们发现什么位次下推,Map join等等,我们所看到的在have当中那些参数要配置的一些优化方式,哎,这个地方呢,都有一个类来表示的,对吧?啊,对于里边transform方法,它其实呢,是将我们的一些操作定了一个名字,然后便利我们所有的操作,看能不能用得上,这些优化其实最开始都已经写好了,对吧,就相当于诶一个一个排着队来。
02:47
看你这种条件是否符合,如果符合我给你做一个优化,如果不符合我们再聊其他的事儿对不对?好,那在这个过程当中呢,我们看一下,首先是compel方法里边,呃,刚才我们看到这个是解析成ast,在下面呢有一个semetic analyze方法啊,之后呢,继续调,在这里边呢,我们找到的是semetic analyzer这个analyzer internal的一个方法,在这里边呢,继续找重载的方法,这个里边就比较好看了,就是我们看到那11大步对吧?那到这块位置,只要大家能把这个注释阴文对大家来说不成问题的话,那么我相信这里边东西应该都是可以能看得懂的,而且我在这块呢,也给大家把这个红色字体表示出来了,同时呢,呃,也有的东西呢,可以写,稍微写了一下这个。
03:34
中文的翻译啊,中文的翻译对吧,你可以对着文档去找一下,当然这里边我有一点需要提醒大家,因为有的东西是没必要的,所以呢,很多地方大家会看到点点点,其实我就把源码呢,相当于省略掉了啊省略掉了对吧?好,那这个呢,是我们整个的解析过程之后呢,就提交我们的任务了,好那我们把这个呢。
我来说两句