00:00
好了,同学们,我们接下来来讲一下我们的group啊这个算子,嗯,这个算子呢,其实你会发现跟咱们盖集合的方法是不是也很像啊,就是根据什么什么来进行分组啊,那么分组的规则呢,你自己来定义啊,那么我们会有一个函数,这个函数的返回值呢,它是我们分组的K啊,把你的数据进行分组,放在不同的那个我们的K所对应的那个组当中,对吧?好,我们来演示一下。呃,这里呢,我们写上啊,咱们叫做零六,把这个呢我们去掉。呃,放过来以后这些东西我们暂时就先不要了啊,那好,现在呢,我们这里啊,准备来分组啊,咱们这个地方咱们叫group by。那这个group by呢?那首先我们的RDD就拿过来,过来以后点它里面就有一个group,然后呢,我要进行分组,那我根据什么分组呢?其实有很多种方式啊,它会把我们的每一个数据来判断它在哪一个组当中,所以呢,它里面是有一个函数的,这个函数是这样的,同学们看啊,来我们写上叫做来我们叫group。
01:12
嗯,咱们叫做function吧,那它这个里面怎么回事呢?它是把每一个数据哎传到这个函数当中,比方说number,诶给他一个int对吧,然后呢,它需要返回你这个number所对应的分组的key啊,所以我们返回的应该是那个分组的key,那么相同的key它就会放在一个组当中啊,是这样的,所以我们简单的把思路说一下啊,咱们的这个group。将我们数据源中的每一个数据进行我们的分组判断,那么我们说分组判断之后呢,我们根据返回的分组K进行分组,那么相同的K值的数据。它会放置在一个组中,对吧,嗯,就是这样。
02:04
比方说我们现在是个number,那我现在就返回一个什么呢?我们的number,那这是啥意思呢?就是意味着你给我个一,那我就按照一来分组,一就是我分组的K,那如果呢,你给我一个二,那么我就按照二来当成分组的K,那你会发现,那么我们现在分组的K1是K20K 30K 40K的话,那么就有四个不同分组的K对不对?那么这个时候他们的数据会放在不同的组当中,对不对?那这样的话可能效果也看不出来,那我们还有另外一种方式,比方说我来干嘛呢?Number,我们模拟二。那你模以二以后,大家想一想,那么我们的一模拟二以后,它是有余数是一,那么二模拟二以后是零,所以模拟二以后的结果来当成我们分组的T,那不就是奇偶数吗?对不对,如果是一就是奇数,如果是零就是偶数,那么说白了就是奇数放一块,偶数放一块不就是这个意思吗?好,那么我们现在呢,把这个呢,拿过来放到这里,放到这里以后,咱们现在呢,点一下VR回车,回车以后我们叫group r DD啊,那现在呢,我们就可以来看一看了啊,我们这里呢,来点我们叫做collect,然后呢,我们的for each。
03:19
好了,那我们现在呢,给它运行啊,其实你写匿名函数也可以啊,但是我们希望大家能够明白,N组函数呢,其实那个分组的K你要知道它的意思啊,它会根据我计算出来的K来进行分组,那么它模拟二以后,那么我们说了那么1234,其实就是把它模拟二以后,取一个零或者一,那么零会放在什么?所有余数是零的啊,就是我们的偶数嘛,会放在一块儿,那么所有余数是一的,那么它会放在我们的一块儿啊,就是我们的奇数,这就是一个最基本的分组的概念,对不对?诶就是这样,但是其实分组啊,不光这么简单对不对,那其实比方说我们的这个单词啊,以我们的什么S开头的呀,以S开头的呀,放在一个组当中对不对,这其实也都是可以的,所以咱们这里呢,可以再来演示演示啊,来拷贝。
04:06
拷贝以后,这边我写上一个一啊,点击OK,然后呢,放过来,那比方说我的数据就不是这个样子了啊,把这个去掉,去掉以后把这个地方拿过来,嗯,咱们写上,比方说我们叫hello Spark,然后呢,再来我们再写上一个,比方说咱们的海杜op,那这样的话我想干嘛呢?我想根据它的手写字母来进行分组,相同的手写字母放在一个组当中,所以这个时候吧,把这个都去掉,RDD点点了以后,我们叫做什么呢?我们叫group by,然后呢,我们拿到的,记住你拿到的是每条数据,那我想根据数据当中的这个手写字母,那么你直接写上啊,咱们下划线,然后呢,点咱们的char at,给他一个我们的零是吧,你这么写以后,那么它返回的结果呢,就应该是一个分组的了,嗯。好,那我现在呢,运行一下啊,那么相同的手写字母就会放在一起,这就是分组的概念。
05:07
好,看一看我们的执行结果。好,大家看到H啊,那么hello,那么S呢,我们的Spark,我们的LA啊,全都放在一块儿了,嗯,这就行了啊,这个跟我们LA集合的那个group方法是非常类似的啊。
我来说两句