00:00
好了,同学们,那么我们现在来看啊,呃,双子类型当中intersection咱们说了它是我们的交集对不对,没有任何问题啊,但是他说了思考一个问题,如果两个RDD的数据的类型要不一致怎么办?诶这句话是什么意思呢?大家回过头来看,咱们刚才呢,给大家演示的这个数据啊,他们俩都是一个int类型的,所以这个没有任何问题,他们可以做这种交集,并集,差集对不对,但是如果类型要不一样怎么办呢?比方说叫RDD7 a7,那这个时候呢,来同学们看,我们写上一个RDD8,然后呢,干嘛呢,把这个七给它放过来,把这个呢,我们给它去掉啊,咱们去掉,去掉以后,诶我们来试一试啊,大家看一下,我们把这个变一下,变一下咱们写上,咱们写上什么呢?叫做珠串三,然后呢写个四,然后呢写上一个五,写上一个六啊很简单,就是把我们的。
01:01
注字变成字符串,但是你会明显发现不行,它编译是不过的,鼠标放上去它会告诉你呢,你当前的这个类型呢,是有问题的,类型是不匹配的啊是这么个概念,那为什么呀,其实很简单,因为这个intersection呢,他在我们调用的过程当中,大家会发现我们当前的这个传递的参数当中,这个RDD它是有类型要求的这个T,那这个T是什么呢?这个T就是我当前的RDD的那个数据的类型,所以啊,它就要求你的两个RDD的数据的类型要保持相同,那而且返回的结果也是相同的类型,那你如果一个是int,那么它是int,它字符串你们两个类型不就不相同了吗?你不相同的话,它这是不行的啊,所以从这个角度来讲的话,我们稍微的咱们说一下啊来嗯。咱们的这个交集啊,咱们的病集和那个我们的差集,他要求啊,要求我们的两个数据源啊,它的什么,我们的数据类型它保持一致啊,它保持一致,诶就是这样的,你数据类型呢,不一致那就不行了,对不对啊,就是这样啊,所以啊,大家看啊,记住啊,不光是我们这个交集,其实你看一下我们的这个叫做union啊,点一下点完了以后是不是也是T呀,Other的另外一个RDD是不是也是T啊,诶就是这样啊,好,再看那个我们的这个subject,我们点一下点点完以后是不是也是T,哎,都是T啊,所以交集并体差集啊好,那我们回过头来看,我们另外一个叫做什么呢?拉链,这个拉链我们点一下,咱们叫做jep,嗯,点点完以后你会发现它没有这个要求,为什么?因为它的这个U是可以变化的。
02:50
他不是说是那个T了,所以呢,如果你是个U的情况下,它所形成的拉链应该怎么办?同学们是不是应该是T和U的一个ta啊,所以那么这个时候大家可以看一下来把这个拷贝,拷贝以后啊,咱们来复制,复制以后咱们放到这个拉链的位置,这个时候呢,你写上一个叫做RDD,我们的E,咱们叫做jeep I和那个七,这么写没有任何问题。
03:16
对吧,所以我们看到是对的啊嗯,好了,那我们先说一下咱们的这个数据类型的问题啊,所以咱们在这儿再补充一下,嗯,我们的拉链啊,咱们的拉链操作啊,操作它可以呢,诶可以呢,什么什么两诶拉链操作两个我们数据源的类型它可以它不一致,诶它是可以不一致的啊好,那这个呢,我们说到这里了之后呢,那么我们接下来呢,我们再说另外一个问题啊,还是说拉链吧,嗯,好,我现在把这个咱们拷贝一下,拷贝以后呢,我写上一个一,然后点击OK啊然后呢,放过来,呃,放过来以后啊,我别的先不考虑了啊,咱们先不考虑了,把这个去掉,然后把这个去掉,去掉以后把这个呢,咱们都不要了啊,咱们都不要了,那么有一个小细节呢,咱们稍微的要给大家说一说,嗯。
04:09
呃,说什么呢,就是我这里面呢,给他来我们写上一个我们的逗号啊,写上一个二,然后呢,再给它写上什么呢?一个我们的四四啊,咱们写个四,呃,这个是什么意思呢?大家可以看到我现在呢,1234我是分两个区,那么一和二在一个分区当中,三和四在一个分区,对不对,诶是这样的,那么我们的四个分区就是3456分别在一个分区,所以啊,咱们是这么做的,然后接下来呢,把它做一个拉链啊,咱们这么来做处理,所以我们接下来运行。运行以后啊,咱们来简单的看一看,嗯。看一看。在执行的过程当中啊,这个时候诶会发生错误,那这是怎么回事呢?不就是拉链嘛,你看一和三,二和四,三和五,四和六,很简单呢,诶这个时候发生了一个这样的错误啊来同学们翻译一下,翻译一下,嗯,我们有的同学呀,他出现了错误之后啊,他经常呢,会说老师呀,这个我看不懂,你帮我去啊解决一下,其实你说这几个单词真的看不懂吗?啊,只是我们同学们不去看而已,对不对啊,就是这样,那么大家看一下这里是什么呀?他说了叫做什么呢?叫numbers of partitions,顾名思义叫分区的数量吧,然后说了叫做什么呢?叫ane,是不是不相等的意思就是我们分区的数量它不相等怎么办?你不相等的话就counter je r DDS呀,你就不能够拉链。
05:46
对不对,哎,所以啊,通过这个现象咱们就搞明白一件事情,我们的两个啊数据源,它要求我们的分区数量啊,分区数量要保持一致啊,保持一致,嗯,咱们要保持一致啊,OK,没有问题,那保持一致,好吧,给个二吧,对不对,没有任何问题啊,但是这个时候干嘛呢?我写上五啊,我写上五和六。
06:13
哎,这个时候我的分区数量我确实一致,但是呢,我的这个RDD啊,我们多了两个数,这个其实在skyla的集合当中,我相信大家应该知道这个五和六是拉不上的,对不对,他只要把13243546拉上就可以了吧,所以啊,咱们现在接着来咱们看一看啊运行。运行以后看一看我们这个时候啊,有没有什么问题产生,嗯。观察一下。刚才呢,是我们的这个数量不一致,它不行,那现在呢,我们再来往下看,那么往下看的时候啊,你会发现其实在当前场合下,它也会出现错误啊,来咱们看看这个时候啊,它出现的错误的信息呢,在这儿啊,同样同学们又要考你们的翻译了。那这个翻译呢,咱们再来看看吧,什么意思?
07:02
嗯,他说了啊,咱们叫做只能拉链对不对,叫only嘛,只能够拉链RDB,就是只能在这个情况下去拉链,什么情况?Same number of element in its partition,那么这个是每一个分区,然后这是元素,然后这是数量,每一个分区中元素的数量相同的情况下,它可以去拉链对不对,那好,那你明显这是不对的了啊,为什么呢?因为两个分区它的每个分区是三个吧,而你两个分区每个分区是两个吧,所以分区的数量它不一致也不行啊,所以呢,我们又写上了啊,咱们两个数据源。我们数据源啊,咱们要求啊,要求我们分区中啊,我们的数据它的数量要保持一致。咱们要保持一致啊,这个就非常特殊了啊,所以说你会发现咱们bug当中的这个拉链这个效果呀,其实好像显得有点复杂了,对吧,你像史GALA中的那个集合的拉链,就感觉相对来说简单一些,对吗?
我来说两句