00:00
好了同学们,我们接下来来讲一下这个join的嗯方法,那这个join的方法呢,它其实啊,它是将两个数据源中的数据相同的T给它连接在一起的意思啊,怎么join呢,叫连接嘛,这个在咱们学circle的时候啊,那个两张表的数据关联的时候,就会用到join对不对啊,它有一个概念叫做内联啊,是这样的,那么在我们的函数说明当中,大家会发现就是我们的KV啊,我们的KW的RDB2个数据来调用这个方法,那么这个方法呢,是相同的K对应的数据会连接在一起,所形成的这么一种类型的RDD,那么就意味着K它因为相同嘛,它保持不变,然后呢,会将那个V和那个W形成个ta啊保存起来啊,就是连接的意思啊,连接的意思,这个呢,我们一块儿来看一看。把前面的给它先关掉啊,来我们写上一个21啊,然后呢,这边直接拿过来点击OK来继续啊,我们把这个嗯准备一下啊,咱们准备一下,这个呢,我们就不要了,之前讲过的东西咱们就去掉了啊呃,现在呢,我们这个去掉,哎,咱们去掉,然后我写上一个这个地方我们也去掉吧,嗯,这个我写上一个B啊,然后呢,这个我写上一个C,好吧,同学们,行,那我现在呢,原封不动拷贝,拷贝以后两个数据源,一个DD1,一个RDD,然后呢,我把它改成我们的四,然后呢改把它改成五,然后把它改成六,然后呢,我们这里呢,RDD咱们写上啊来写上DR,我们叫做join啊,然后呢写上RDD,然后呢,记住啊,这两个我们的数据啊,它的类型啊,我们点一下就这个里面的key,记住啊,它的key的类型应该是要相同的,然后呢,这个类型呢,其实可以不相同。
01:49
好,那我现在呢,我们点一下叫做VAR回车,回车以后,那么这里呢,就是我们的join r DD,诶就是它了,然后呢,我们的join r DD呢,我们点啊咱们的collect,点我们的for it啊print行,OK,那我现在呢,运行一下,我说了相同的key,诶会把这个V它连接在一起,那么一和四就形成了一个ta,二和五就形了一个ta,三和六就形成了一个ta,啊是这样的,这样咱们的结果呢,应该打印就会形成这么个效果,ABC142536啊就是这样,这就是一种连接,那有的同学会误会说,老师你看他们的位置相同,那是不是意味着相同的位置就跟拉链一样,把一和四拉链在一块儿呢?其实不是,记住啊,我说的是K相同,你把这个调整顺序也是一样的,你把这个放到最后去,那你把它放到最后去,那么A和B,那么按按照这个如果是拉链的话,是不是一和五就拉在一块了,对不对,但是其实肯定不是。
02:50
是么?所以我们运行啊,运行以后看结果你会发现它依然是我们的A和这个A给它就是连接在一起啊,还是A14对不对,所以啊,这里咱们简单的描述一下来,我们写上就呃,那么我们两个啊,我们的不同数据源啊,数据源的数据啊,那么相同的key的value啊,会连接在一起,形成我们的这个元组,诶老师那万一。
03:20
K不相同怎么办?比方说这个C啊,或者说这个B吧,我给个B,我如果给个B的情况下,那么大家会发现这个B在里面没有,而这个D呢,在它里面没有,那么他们有的是A和C,那这个时候会怎么办,对不对?我们来看看啊,看一看我们的结果会变成什么,这个我们再来确认一下,刚才我们一直在强调是相同的K,可这个时候就有不同的K了,对吧?嗯。好,大家会发现那个B和D在这儿出现了吗?根本就没出现啊,所以我们再来补充一下啊,就是说如果啊他没有啊,就是两个,如果两个数据源中啊,我们的K它没有啊匹配上,那么我们的数据它不会出现在结果中。
04:10
啊,就是你的这个B啊,在这没有匹配上,你的D在这儿没有匹配上,那么根本就不会出现,诶老师呀,那万一如果你有两个A呢,之前我们说了,诶你相同的K,那你的相同K如果有多个,又会出现什么情况呢?那是不是这个一和五连接在一块儿以后,这个四就不连了呢?哎,不知道,所以啊,我们运行一下,看一看这个时候又会出现什么结果,就是当我们的这个P相同的有多个的时候啊,有多时它是如何操作的啊?好,我们来看一看啊来大家有没有发现相同的K,其实它会挨个匹配,那这样的话就意味着这个会和他匹配,它会和它匹配,大家看一下它和它,它和它,那我问同学们,你的这个A和C会不会匹配,其实它也会。
05:04
为什么也会呢?是因为它俩匹配不成功,出现不了结果吧,但是在底层的原理当中,是不是应该A和C也能够想办法去匹配,对不对,所以啊,在这种情况下,它有可能会出现什么笛卡尔成绩的感觉,对不对?哎,就是笛卡尔成绩的感觉,但是这个其实嗯,可能没那么准确啊,但是含义上是很的,所以啊,咱们的这种情况会导致数据量啊几何的增长,为什么呢?本来啊就是这样的数据,但是呢,它一连接可能就很多了,大家想想是不是这样的,比方说咱们举个例子,比方说我这写个A。啊,我这写个A,那按理说相同的T的话,大家看这是不是都相同T应该是一条吧,可是你这样的话aaaa,然后呢,我们再来啊再来。那么我们来看一看啊,这个时候会出现什么样的结果。大家有没有发现本身相同的KA只有一个,但是呢,你现在出现的A却有四个方,所以两个A,两个A是不是类似于D乘积的感觉了啊,所以我们这里说一下来,呃,如果我们的两个数据源中,我们K啊,它存在啊,我们叫重复的,嗯,这个K它有啊,我们叫做多个相同的啊,多个相同的。
06:12
那么它会啊,咱们叫依次匹配啊,那么可能啊,会出现我们叫做笛卡尔乘积数据量啊,咱们叫数据量会几何增长,那会几何性啊,我们的增长,那产生的效果是什么呀?或者说产生的这个问题是什么呀?那么其实就是说会有是吧,内存的风险,因为数据量太多了嘛,你的内存可能不够用,对不对,所以啊,几何性增长啊,我们说会导致我们的性能降低,这是肯定的嘛,对不对啊,所以咱们这个join应呢,咱们要谨慎使用啊,看看能不能不用join应也能实现同样的功能,那就好了啊,那如果你要非得用教应的话,想一想能不能有别的方式来做处理啊,同学们。
我来说两句