00:00
接下来咱们首先看第一个啊,咱们的行动算子叫做reduce,这个reduce我们一看呀,它就是一个聚合的功能的方法,对不对,所以呢,我们这里来拷贝,拷贝以后来我们写上一个零二,嗯,好,点击OK啊,放过来,放过来以后这个呢,咱们就不要了啊,咱们叫RDD点我们叫做reduce,这个reduce大家会发现它就是两两聚合嘛,把我们数据源当中的数据两两聚合,最后得到结果,但是。大看这。你会发现这个reduce是直接就出结果了,但是我们之前讲的那些转换算子不是这样的,咱们讲的那些转换算子其实都是变成了新的RD,而我这里直接出结果对不对,为什么?因为触发了作业的执行,而咱们之前的转换算子是不会触发业的执行的,只有行动算子会触发,咱们讲过吧,好,咱们直接来咱们这里呢,叫reduce,嗯,然后呢,两两聚合,咱们就下划线加下划线可以吧,诶,数据源当中的第一个,第二个两两聚合,这是我们的三,三和三是六,六和四,它这结果就应该是十呀,所以来我们的VAR回车,那么这个结果应该打印出来,它就是十。
01:22
对不对,同学们没问题吧,诶这个就比较简单了啊,而且感觉上是不是跟skyla集合当中的reduce方法非常的类似呀,诶,就是这样啊,好,咱们来看一看啊,大家可以看到结果就是10SPA,诶,好,那行,咱们接着再往下吧,下面这个叫collect,这个collect就叫采集,咱们之前是不是给大家说过呀啊,咱们之前一直在用我的collect,所以啊,咱们这里来啊,写上叫reduce,嗯,咱们叫做reduce,我的这个代码就不变了啊,咱们再来吧,为什么呢?因为比较简单嘛,所以我们再来啊来下面我们写上叫做collect,嗯嗯,这个呢,写上RDD.collect诶,好,然后呢,点我们叫VAR回车,回车之后大家看一看我们的结果啊,咱们回车之后,这个时候返回的是一个R。
02:14
这个是什么意思呢?它的名字叫做采集,它会将我们不同分区的数据按照分区的顺序采集回来啊,所以我们说一下我们的方法,它会将我们不同分区的数据按照我们的分区顺序啊顺序啊采集。采集到我们端啊,咱们叫做driver端内存中啊,进行处理啊,或者说内存中啊,呃,形成吧,形成我们的数组,哎,就是这个意思,所以啊这个地方记住啊,它有一个分区顺序的概念,就是你的一和二,它会先采集到你的三和四,会后采集到,为什么呢?它有个分区的顺序,所以说你的这个结果同学们看啊来。
03:03
咱们叫做print,嗯,咱们的他点咱们叫make string,好,写个逗号好了我们再来吧。啊,这个collect咱们之前一直在用,一直在用,它就是把咱们不同节点的计算的结果呢,采集回到咱们的driver端,啊这个咱们之前呢,也简单的说过这个driver和excuor啊,咱们叫1234对吧?嗯,好了,那么这个没有任何问题了,咱们接着呢再往下吧,嗯,往下下面呢,有一个叫count,从字面含义上来讲,是不是就更好理解了,同学们来把这个注掉。注掉以后啊,就是我现在啊,要把咱们RDD中元素的这个数量呢给它拿到,所以RDD点我们叫做count,那这个count呢,我们就来了啊,咱们就叫做count吧,它等于它我相信没问题吧,这个count很简单啊,很简单,咱们就count,就是我们RDD中数据源,或者叫我们叫数据源中啊,咱们叫数据的什么个数,哎,能够统计出来这个比较简单了啊嗯,把它拿过来,咱们叫print,嗯,咱们就叫count吧。
04:15
好了,那除了这个以外,咱们再往下,下面呢,还有一个叫first,顾名思义它第一个呀,所以我们再来啊,咱们写上来,我们写上,嗯,咱们叫啊,它就等于RDD点我们的first,诶,它取数据源当中的第一个,所以来我们写上啊,咱们叫获取数据源中啊我们数据的第一个啊,咱们叫first,所以把这个呢,我们也给它来放到这边啊,咱们叫first,诶,你会发现这个好像越来越简单了,对吗?它的方法没有那么复杂了,也不需要传大量的参数,只需要直接调用就可以了啊,来,我们继续啊,咱们再来,下面呢,还有一个叫take take取。
05:01
多少个对不对,诶所以啊,这个好像咱们也比较熟悉啊,所以RDD点我们叫做T,诶给个比方说给个三吧,嗯,然后点一下我们叫VAR回车,回车以后,那么这个时候呢,把这个咱们给它拷贝啊,咱们拷贝嗯。拷贝以后放过来啊,放过来这个叫take,这个表示的是获取啊,我们的N个我们的数据,那好,这是三,就是三个数据嘛,然后呢,我们来取那1234取三个不就123嘛,这个其实跟SKY的集合非常类似啊,还有它这里面后面有一个叫做什么呢?叫take ordered,这个take order的是啥意思啊,大家看一下是不是加了个ED啊,它表述的是已经排过序的数据,我取多少个,它是这个意思啊,所以我们再来咱们拷贝。拷贝以后拿过来,咱们这边写上一个叫take order的,但是我觉得是不是应该把这个数据我一遍呢,大家看一下,咱们把这个数据拿过来拷贝,拷贝以后放过来,我写个一,然后写个一,然后呢,我把它改一下啊,咱们写上叫做什么呢?4231啊,咱们叫4231好了,然后呢,这个呢,我们写个一,把这个放到这里,记住啊,这个稍微的有点变化了,为什么说有点变化了呢?是我们需要先排个序,再取多少个啊数据啊,它排序后它取咱们的N个数据。
06:32
所以啊,它有这么个概念,那么这个地方呢,那么我们排序的话就1234呗,他取三的话不就123嘛,对不对,我相信这个也没有问题吧,同学们,嗯,好。行了,那我们先写到这儿以后,我们接下来给大家稍微的咱们演示演示这个效果啊,看看结果是什么样子的,嗯。好了啊,咱们现在呢,给它运行一下看结果。好了同学们,结果出来了,咱们分析一下吧,首先count它表述的是我们数据源当中数据的个数,咱们是不是四个呀,没问题吧,哎,四个就出来了,然后呢,他取第一个,那么1234的第一个,那不就是一嘛,没问题吧,然后呢,我们这个地方是take,他取前三个1234,那么前三个就是123,然后我们这个呢,是要先排过序之后再去前三个4231,排序之后它是1234,所以啊,他这里面呢,取的就是我们的123,诶老师啊,那如果我们这里想要降序取前三个怎么办?其实你看一下咱们这个take order的,咱们点一下它后面是有什么东西啊,叫排序方式,默认是它的一个升序排列,那如果你想降序的话,你把第二个参数给它传进去,其实就可以了啊,这个咱们就不演示了好不好,同学们,这是我们几个啊,比较常见的一些行动算子啊。
我来说两句