00:00
啊,你看,呃,我这个代码里面也是怎么样,也是简写的对吧?呃,到最终呢,直接来到be gray,因为我也觉得这一块实在是太啰嗦了,跳来跳去,跳来跳去啊。可以直接看be gray来,那相当于说咱们文档你想看直接拉拉到哪里呢?我标红的这里。就从这里开始啊,从这开始。嗯。好,接下来我们就要来分析了,同学们,那这一段呢,大家呃,主要看看他做的什么事啊,好往下看前面一些信息的获取啊,信息的获取啊,不用太关注啊,那么这边是不是创建了一个新的执行图啊,如果什么。还不存在的话,对吧,其实就声明了一个。变量啊。呃,声明的一个对象嘛,对吧,好执行图,然后呢,怎么给它赋值啊。下面就是判断一下。
01:02
是否为空啊,是否不为空,如果不为空就是这个,如果为空就怎么样。就建一个呗,那怎么建呢?直接new啊new new一个execu,那么后面呢。这里你看就是各种参数的什么。是不是各种负值啊,好,那这个咱们就不去看了啊。啊,因为太多了,你看这参数。有多少啊?好,那现在是相当于说初始化好了,对不对,一些配置信息也都有了,接下来是不是边啊顶点啊,那些还没有啊好,接下来再往下走。往下往下,往下往下。那首先呢,我们看到这一行,这里也有官方的注释啊。那么你看它是什么呢?获取顶点,然后呢,Sort sort是什么排序啊,然后对什么呢。
02:04
这个单词是不是拓扑?拓扑的对吧,有拓扑的。呃,从。来源里面啊,说白了就是什么,对所有的作业顶点我先给你排个序对吧?啊先排个号啊,不要乱来之后呢。将拓扑排序过的。作业图。放入到execution graphic的数据结构里面。呃,再往后,再往后,你看很长这么一大段,都没有什么重要的代码了,也就是说咱们来往前是不是要看这里了啊,这个相对少一点,直接就主要先排个序,然后就开始处理啊,先排个序再处理好点进来啊。好。那这边咱们就不再看到细到每一个怎么转换怎么连了,因为我觉得讲的好像没什么意义,对吧,我们知道在哪个地方做这个事儿就行了啊,那你看在这一行。
03:08
他利用了一个什么。是不是执行的作业顶点了,这个是什么呢?哎,他要把图里面的这个东西对应起来啊,知道这里在做啥就行了啊不用。嗯,可能讲的过多反而不好啊,不好。来我们对应的这张直行图。执行的作业顶点是什么?是不是外面这个,是不是这个橙色的虚框这个整体啊。对吧,他现在是不是另外一个这个这个是不是跟作业顶点是一一对应的,它有几个它就有几个吧,所以他直接六六里面,你看是不是把作业顶点直接传进来啊。直接进来默认并行度为一啊,默认并行度为一。好了,再往下将创建的执行作业顶点跟前面的。
04:04
中间。什么中间结果连接起来吧,也就是哪一个呢?啊,比如说我们看这个这个整体跟。什么?中间结果是哪一个,是不是这个。呃,啊,不是不是不是,应该是这个对不对。对吧,例子嘛,就当前的中间结果嘛,也就是说是他。输出的那些数据嘛,对不对啊,那这个结果是什么,是不是也是这个大的绿蓝色的框啊,是大的框对吧。好,那现在是不是。这一块连接起来了,连的是哪里啊,这里对不对,这里好,再往下再往下。将当前的。
05:01
直行图节点加入到图里面是黄色小结,圆形的还是这个大长方形啊。你看名字嘛。是不是还是大的应该。对吧,是不是带有旧这个关键字啊啊,你不要搞混了啊。当然他这边是不是算了一下节点的数量啊,这边我没有标蓝色的,就你看它是不是加并行度啊,因为咱们数量是不是跟并行度有关呢啊,他就加啊这个怎么就随便提一句啊,再往后有吗?没了吧啊。嗯,那其实咱们是不是可以看这啊。对吧,你像这文档啊。这里面。往往后推啊,咱们已经到快结束了啊。诶,你看核心方法是不是这个。
06:02
怎么连接的是不是关键?是怎么连接才是关键啊。那所以呢,咱们接下来要看的是。呃,我把这里标一下啊,核心逻辑。核心逻辑啊。前面都是各种创建创建,然后这一块才是真正执行连接的地方,那么这一块呢,怎么连呢?大家选择性的来看,好吧,选择性来看。嗯。这个图还是放来,首先是不是作业顶点获取它的输入,输入是谁呀?作业顶点输入是谁啊?这是一个作业顶点。它的输入是不是这个作业边。OK吧,好,那你看他返回了,是不是作业边的集合啊,好,再往下。再往下。通过一个。
07:01
边的ID。获取当前。作业边输入所对应的结果,啥意思啥意思啊?咱们这个边是不是存了它的前后信息啊。那我通过这个边能不能知道它的前面是谁?可以吧,所以它是不是根据一个source ID是不是它的来源ID啊。来源ID,那它的来源是不是上一个中间数据积压,那这里就拿到了一个什么。中间的。数据集,但是在执行图里面叫什么。是不是中间结果?对吧,你看这个蓝色的大框是一个整体啊,是不是跟作业图里面这一一大个是一一对应的。啊,所以他现在返回出来,你看是不是这个中间数据集get一下ID就变成了一个结果啊,这里是不是做了一个转换。
08:03
啊,或者说别说那么复杂,这边是不是完成了这个到这个的转换。是不是这里完成了转换啊,好,然后呢,就是一些连接关系了,你看啊,将这个结果加入到。作业点的。输入里面。那是不是它的输入来源哦,之前说错了对吧,输入来源是不是这边啊。输入来源再拿货呢,可不仅仅这些对吧。为中间结果注册消费者,也就是说注册它的输出,他的输出是谁呀。是不是当前节点呢?当前节点啊,当前节点,他这边暂时是忽略了这个边对吧,暂时忽略了这个边再往下。Source。这个是把什么。
09:04
这个时候才咱们这个跟这个的前后关系已经有了,对吧,这个时候再根据他们俩之间的关系。把边插进去。看到没有把边插进去。就是说这两个东西先有了之后呢,再描述他们是啥关系啊,描述是啥关系。那这个也可以接着看呢,怎么连的呀。那也就是说这个边是怎么确定的呀?边是咋确定的往里点。接下来是确定编了啊,同学们啊,那你看只有是forward的方式的情况下。咱们匹配的模式才是叫point wise是吧,另外其他都是。这是给大家做一个介绍,然后呢,它是判断这个模式啊,所以咱们当前应该走哪。
10:02
咱们这边是凹吗?不啊不是是是forward吗?不是吧,Forward是不是类似one直接一条怼过来那种啊啊你有多条的话就不算啊,那所以我们是不是先看这个。Connect图,看它是怎么连的,再点。那在这里面呢,你看是不是才在这里构造这个执行边呢。啊,他是在这里构造执行编的啊。好了,那么。这三块内容是不是都有了?这个的转换。还记得咱们刚才看的啥吗?是不是有点忘了啊,那刚才是不是对这个顶点看了一下,他怎么转的呀。是不是?哎,之后是不是又来了一个中间结果的转换呢?再之后它才根据这两个的关系创造出了它们的边,对不对,是这么一个过程啊,这么一个过程123。
11:01
好,那么大家我觉得了解到这就够了啊。嗯。好了解到这就够了,那我看看有什么补充的啊啊,这边就没有太多补充的啊。那这块是又介绍了一个,它的存储底层是咋存的,对吧,这个有兴趣大家去看一看啊。这就是咱们整个一个主要逻辑啊。
我来说两句