00:00
好,同学们,我们接下来看一看,这个叫RDD依赖,我们刚才呢,已经把咱们这个环境啊稍微的说了一下上下文的环境对象,那接下来下面呢,就是它里面的方法来创建RDD了,那么RDD最关键的就是他们所形成的一个依赖关系,血缘关系,对不对,那这个是怎么形成的呢?这个是我们接下来要给大家讲的啊,我们来看看啊,首先我们来往下走,因为这个呢是我们的SPA connect的,那我们接下来就往下了,往下以后呢,我拷贝啊,咱们拷贝这里面就有一个RDD,咱们叫RDD,但光这么画呢,大家可能看的不是很明白啊,所以我们这边来写上啊来我们现在呢往这边看,比方说我现在在这边构建了一个RDD吧,对不对,那我们点一下,点点完以后,大家会发现这边会有一个do file,然后呢,在这里面会有一个map,这个map你点一下,其实啊,它会有个叫map parts r DD会有这么个东西啊,所以把它拿过来,那么你拿过来以后,就意味着我这边得到的其实就是一个map part。
01:00
SRD对不对,好,我们再往下,往下以后是不是有个叫flat map呀。这个Fla map你点一下,你看怎么了,是不是也扭出来一个,所以说那就意味着它扭出来了另外一个。也叫map parts r DD,这个呢,我换一个颜色啊,换一个颜色可能会好一些,哎,变成红色,那好了,这个时候问题来了,什么问题呢?我们是把我们当前这个Fla map的那个对象,诶给它干嘛呀,传到里面去了,你可以理解为是外层的RDD,它把它包进去了,那所以这个红色如果是外层的话,那是不是就意味着把之前的那个RDD给它包进去了呢?同学们这个能不能明白,所以把它包进去,你如果包进去的情况下,那这个时候这个里面的是不是就是我们之前的RDD啊,哎,就是这样。而且它这个包含当中啊,你要记住了,同学们,它们属于一种依赖,什么叫做依赖啊,就是我用到你了吗?A用到了B不就意味着A依赖于B吗?那我构建这个对象是不是依赖于它呀?所以我们的红色的这个RDD,它依赖于紫色的RDD对不对?但这个依赖是什么样的依赖呢?不知道,所以咱们接着往下咱们点。
02:15
点进去以后,大家会发现这边有个什么东西啊,有一个RDD吧,然后呢,我们再去点,因为它是负类嘛,所以我点点完以后,你会发现它会掉这样的一个什么,掉这样的一个构造方法,然后怎么了呢?同学们,它会有一个叫one to one dependency,叫一对一的依赖,你会发现它会把依赖关系我们点,点过来以后,这个依赖关系它就会传到当前的RDD当中,并且我们后面如果取得依赖关系的话,它可以直接返回这个依赖,所以后退,后退那就意味着这个one to one depend就是当前RD对于它的依赖,所以说我们这边可以稍微的什么呢?诶,咱们来拿过来,拿过来以后我放到这边啊,咱们放到这边,然后呢,把这个one to one dependency,我们放过来啊,嗯。
03:08
那么放过来以后,我觉得是不是可以这样呢?嗯,那我觉得这个拉大一些是不是就更好一些啊啊或者说嗯,行,我觉得这样就可以啊来这个呢,我们的它好,那我们现在这边给它画一个颜色啊,换一个颜色,然后呢,箭头,哎箭头箭头呢,通过这个one two one dependency,它来指向咱们这个位置,我为什么会这么画呢?同学们看一下咱们这边one to one dependency,咱们传了一个值进去吧,这个字是什么呢?点。把RDD给它传进去了,对不对,哎,就是这样,然后点这个叫narrow,咱们叫窄依赖嘛,点点完以后这个RDD干嘛呢,就放到了这个位置,所以这就意味着我们的依赖关系当中,其实是关联到咱们的RDD的,而我们刚才的这个one to one的RDD呢,来自于我们的这个啊传的参数,而这个参数呢,恰恰就是我们构建这个RDD的时候所传过来的,它对吗?所以我们画图的时候,它来指向它,这是没有问题的,这就是一种我们的什么依赖关系,我们这个RDD的依赖one toone,它就指向了它,我用到了你对不对,就是这个意思啊好了,那我们接着呢,再往下看,看什么呢?我们下面有一个叫goodbye,这个goodbyeby我点一下点,咱们再点,然后再去点啊,咱们走到这叫做goodbye by by key。
04:28
大家会发现在这边会有一个点,点完之后怎么了,会有个叫sale的RDD,所以啊,那么就意味着它又有个RDD了,所以拷贝。拷贝以后,我这里是不是换个蓝色会更好一些呢?来把这个拉长啊,来拉长一下,好咱们给它置于底层,置于底层之后,那我们先看看,现在呢,这个我们就改个名叫S的RD,好把这个呢,我们放过来啊,咱们叫做S的RDD,那么放过来以后,它跟前面是什么关系呢?对不对?我们再来看,我们点,点完以后你会发现它直接就到了我们这个RDD,我们再去点,点完以后你会发现什么都没有。
05:08
那么这个地方呢,是一个depend c,但是你会发现它给了一个什么东西啊,给了一个new,叫空集合说明啊,没有依赖,诶,那不对呀,你的这个S的RD怎么可能没有依赖呢?它其实有,只不过呢,它是一个默认值,什么意思呢?你往下看,往下以后大家还记得吗?有一个叫做get dependency啊,所以它在这个地方呢,它会获取你当前的依赖,你会发现它固定写成了什么东西啊,叫sle dependency。所以咱们来放过来拷贝,拷贝以后我放到这里,这个呢,我们就叫做somele dependency诶就是它,那么这个somele dependency它关联的是谁呢?那咱们看这这边是不是有一个叫做PV呀,我们点一下点点完以后大家看一下咱们这个参数不就是RDD吗?而这个参数不就是我们刚才看的PV吗?这个值哪来的,我们点一下不就来自于你沙否RDD的这个值吗?所以我们后退啊,咱们后退,后退以后大家想想咱们的这个RDD,哎,大家看什么东西啊,就是你当前这个self的这个值,其实就是你当前的这个R啊,所以说它等同于把这大家看,记住啊,我们后退,后退以后后退到哪呢?后退到这地方的时候,它是不是把当前的this给他的一个map,这个map调到它呀,所以这个map之后的那个RDD会关联它,所以说的简单点,其实还是我们前一个那个R。
06:38
哎,就是这样的,所以同学们看啊,就是我们这个里面来把它放到这儿,所以这个s dependency,它关联的是它,而这个one to one dependency,它关联的是它,所以啊,它就一层一层关联啊,就形成了我们现在的这种结构,而现在这种结构呢,恰恰如果你把它当成个点,同学们看,记住你把它当成个点,把它当成个点,那么其实不就是一个点指向了一个对象,一个点指向一个对象吗?这个不就所谓的有向无环图吗?
07:08
它有条线指向了另外一个对象,它有另外一条线指向它,不就一种有相无环图的感觉,对不对?哎,就这个意思啊,所以这就是他们的依赖啊,所以把依赖关系咱们先给大家说一说,这是我们RDD之间的一种使用关系。
我来说两句