00:00
好了同学们,那我们刚才呢,给大家进行了一个简单的介绍啊,就是我们分布式计算当中啊,我们都有哪些内容啊,但咱们肯定是模拟出来的嘛,比较简单啊,没有考虑到很多的内容,那么Spark作为一个我们的计算引擎框架,它考虑的东西应该非常的多,非常的完善,对吗?它里面呢,就会什么有自己的数据结构,那么这里面三大数据结构有RDD加器和广播变量,那么我们一个一个来学,我们先学RDD,那什么是RDD呢?首先咱们往下看,RDD呢,它是几个单词的缩写啊,咱们叫弹性分布式数据集,它是使bug中最基本的数据处理模型。其实呀,咱们的Spark当中,它把我们的计算呀,它把它分解成了最小的计算单元,这个计算单元呢,就是RD,但是光这么说不好理解,所以咱们对比一下咱们之前给大家写的那个小,大家回过头来看一下,我们在当前里面是不是有一个叫task和我们的task呀,对不对,咱们之前刚写完的,那我现在呢,我们就要说一下这个sub task其实就是用来向我们的exec节点发送的计算的任务,对不对?诶,只是我们当时呀,在前面有一个task了,我们才起了个名叫s task,但真正的它应该算是一个计算任务了吧。
01:24
那好,他如果算是计算任务的话,那这个算是什么呢?这个task克,这个task克其实就是一种结构,它里面把数据给他准备好,把逻辑准备好,只不过还没法做什么,我们的分布式的操作,它需要把它分解,所以这个我们的task我们可以理解为就是我们接下来要讲的这个RDD。诶,就是它,所以这个RD你可以理解为就是这个东西,所以啊,那你对比过来的话,那么我们觉得我们的RD,它在最后也要实现我们之前的那种操作,来同学们我们来看一看。
02:02
把这个呢,我们打开,我们就叫RDD好了,那我刚才呢,咱们这个地方就有个什么呢,我们叫做driver,对不对,好,那么接下来我们在这边就会有什么东西啊,咱们叫exor exeor,好,那我现在呢,Driver可能是一个咱们这里呢画一个红色的,然后呢,我们的ex,哎有多个,咱们这里呢,用绿色来表示好不好。那么我们的这个driver啊,我希望在我们当前情况下,我要干什么,我要把那个RDD准备好I,所以RDD它是一个最小的计算单元,所以我们写个RDD,然后呢,我们现在呢,准备把RDD啊发送给我们的好了,然后呢,我们再来把这个我们再发过来,但是我们在之前的练习当中是把RDD直接发过去了吗?不是,我们是不是RDD里面是有数据和逻辑的,咱们对比一下,那么就意味着我们发的其实不是那个RDD本身,我们发的是什么呀?发的是那个sub task对不对,那我在这里呢,可以把它当成什么呢?Task,诶发送的是我的计算的任务啊,然后呢,放过来,咱们用我们的蓝色背景,然后这个也用蓝色的背景,这个咱们用紫色的背景,好了,所以啊,你会发现我们的RDD会怎么办?诶,会把它分解成一个一个的task发给。
03:28
不同的exec执行对不对,这就是我们的RDD啊,我们说了类似于咱们之前讲的啊,咱们的这个类名字叫task,但是含义上跟我们的那个RDD是很像的啊,就是它了,诶老师呀,那你要这样的话,那你为什么把它称之为叫最小的计算单元呢,对不对。什么叫计算单元呢?就是计算逻辑嘛,那么我们现在大家看一下,里面有1234对不对,然后呢,里面有number乘以二,诶就是这样的,然后呢,我们这边大家想想它是不是就分解成了一和二了,然后呢,是不是也是number乘以二,没问题吧,那好,那咱们这个地方写上一个三和四,然后呢,也写上一个咱们的number,诶乘以二,大家想想没有问题吧,这个是一二乘以二以后是二和四,这个是三和四,它乘以二之后是不是六和八,所以计算肯定没有问题。
04:20
那好,那我还是那句话,为什么把它称之为10BUG当中的一个最小计算单元,就是因为我们的逻辑太简单了,你的逻辑太简单了以后,你怎么可能只有乘以二呢?我们要想写个需求的话,它的逻辑可能是非常复杂的,对不对?他可能要乘以二,再加上一,再乘100,再除以十,是不是可能逻辑很复杂呀,但是你把一个复杂的逻辑写上去以后,大家想一想,你想扩展这个功能是不是就不容易了,为什么?当你的逻辑它越复杂,你要想扩展程序就不是很方便,所以呢,我们把RDD呢,把它封装成最小计算单元,如果有新的逻辑的话,给它做一个关联就可以了,就意味着我们在程序当中可能不是说只有一个RDD,为什么呢?每一个RDD都是一个计算单元,每个RDD都是个计算单元,把多个RDD给它关联在一块儿,就会形成一个复杂的逻辑。那么这个复杂的逻辑。
05:20
随着task传给ex,不就可以完成我们的需求了吗?诶,这就是我们的RDD,咱们做一个简单的介绍好吗?同学们。
我来说两句