00:00
Work已经给大家讲完了啊,接下来呢,我们准备呢,把它再简单的过一下啊呃,这里呢,大家看一下,最开始呢,是连接咱们的Spark的环境啊,我们用的是一个local本地环境,然后接下来呢,我们是读取文件的目录,对不对啊,然后呢,把里面的那些文件读取过来,读取过来以后,它是按照行的方式一行一行读的,所以我们这里呢,其实啊是一行一行的植物串啊,然后呢,我们在这个地方,大家可以看到我们把一行一行的字物串是不是给它扁平化了,那也扁平化,扁平化以后我们在这里是可以把我们的一行一行拆成一个一个单词的,然后呢,我们在下面呢,是相同的单词给它放在一个组当中,所以呢,我们这个集合当中,它里面放的全都是相同的单词,那我恰恰想取的是它的数量,你的这个集合的长度不就是我的count吗?所以啊,我们在这里面实现了咱们的word count功能,但是其实同学们想一想啊,咱们的world count,这个count其实应该有一个聚合的。
01:00
的感觉吧,就像咱们学skyla的集合当中,什么reduce呀,Forld呀,Scan这样的方法对不对?这些呢,才有聚合的概念,但你取个size,大家想你用一个大小,这个事情是不是感觉好像不像像聚合呀,只是获取了它中的一个属性,只不过巧了,它能够诶代替那个count,但是这个不是我想要的,我想要的是什么?就是聚合的感觉啊,把数据聚合出一个结果,Count应该是这样,然后呢,你回过头来看我们之前画的这个图,之前画的这个图形当中,大家可以看到我们现在呀,其实并不是聚合,只是把它的一个数量给它得到了,对不对?所以啊,这个我们当时就讲了,缺什么补什么,你缺了什么呀,其实你会发现你缺少的不就是它的数量嘛,对不对,所以如果我能够事先把数量给它加上,那么我的数量给它完成聚合是不是也可以啊,所以咱们的程序啊,要稍微的改善了一下,同学们来。
02:01
我把这个地方呢,给它来啊,咱们写上一个二啊,咱们写上一个二,呃,第二种方式啊,咱们来放到这边好了,放到这边以后啊,我前面都保持不变,但是呢,我们在给大家做分组之前,我们稍微的想变一变啊,什么意思呢?大家看一下,咱们把前面那个图啊,给它稍微的诶,咱们来复制一下,嗯。呃,复制以后咱们往下,咱们复制以后往下,往下干什么呢?就意味着咱们的这个地方来,诶同学们看啊,我现在把咱们的这一块,咱们复制,复制好了以后往后挪,我能不能够在我们得到它的情况下,是不是我们能够再做一次转换呢?就是你先把它拆成一个一个的单词,然后呢,你把它变成什么?一它表述的是这个单词出现了一次,对不对,那好,表示这个skyla出现了一次,表示这个hello出现了一次,还有我们的Spark呢,它出现了一次,对吧,那就这个一次,还有呢,诶,不对,这个好像有点太小了是吧?嗯,拉大一些。
03:04
好了,那我觉得这个是不是就可以给它删掉了,删掉了以后把这个拿过来,拿过来以后给它放到下面去,然后变个颜色是不是就可以了啊蓝色好了,然后呢,那我这边呢,还说啥呢,那不就是一嘛,对不对,然后呢,这边也是个1OK,然后这边呢,也是个HELLO1,嗯,HELLO1,然后HELLO1对吧,诶,OK,放过来,放过来以后咱们死盖了我们的一,然后这边也是开了啊咱们的一,嗯。好了啊,SPARK1,然后接下来我们这边叫Spark我们的一,好了,同学们看数据是不是就可以变化一下啦,那么你变化之后,大家有没有想过,当你变化完成以后,你一加一是不是就是二,一加一是不是就是二,这就是一种聚合的感觉吧,同样道理,一加一等于二,二加一等于三,三加一是不是等于四,诶这样的话呢,我们这里也能起到聚合的作用,所以这样的思路呢,对于我们大家来讲呢,我相信要比之前的那种方式可能会更好一些,对不对,你前面那种方式也能实现咱们的功能,它会感觉好像不像是个聚合功能啊好了同学们,那么我们现在呢,就准备把程序我们改善一下了,我们怎么改呢?我们在flat map,哎,这个文字性的描述,我们是不是就可以先不要了呀,因为太多的话会感觉有点乱啊,所以把这个去掉,把这个呢咱们也去掉,然后把这个呢也去掉,因为咱们之前给大家讲那个word count,如果大家能明白的话,这些步骤应该问题不大啊。
04:30
好了,那我现在呢,这个地方我们写上叫words啊,然后点我们叫map,这个map什么意思呢?就是把里面的每个单词啊,OK,咱们写上一个word OK放过来,放过来以后我们就写上word,诶给它个一表示的是这个单词它出现了一次,所以啊,咱们等同于呢,把咱们的这一步呢,给它做了一下啊就是这个意思,好了啊,那如果是这个没问题的情况下,那么我们返回,你返回的话,应该是我们的word to one对不对,咱们的单词对应于一嘛,就是这个意思,好,那如果你是word toone的话,那么我们相同的单词是不得放在。
05:09
一个组当中啊同学们好,那我现在呢,既然要放在一个组当中,那肯定是什么我们当前的这个tale吧,所以啊,大家看一下我写的tale,然后呢,写上一个T点什么,我们叫下划线一,这个是不是意味着咱们的word就是用来做分组的呀,所以啊,这个其实我们可以去掉了啊,咱们可以去掉,然后呢,我们给他来,嗯。来加上一个VR,那么来VAR回车,回车以后大家会发现咱们现在是这个样子,这是个什么东西,这个是不是单词呀,同学们,它是单词,然后这个是相同单词的那个ta的数据放在里面了吧,所以说那我现在的这个地方,大家想一想,我是不是就可以写上了,咱们叫group RD啊,诶就是它了啊,或者呢,我们不写上,咱们就叫group,其实咱们就叫world group吧,跟之前一样就可以啊好了,那之前一样以后咱们接着往下,往下以后干嘛呢?这个叫word,这个叫list,没问题,但这个list表述的含义有点变化,什么变化呢?同学们看一下,来我们现在咱们的这个word,大家看一下word是它吧,没问题吧,而这个历史是不是它里面会有很多的数据,那这个是不是我们的一,如果它是一,当然我们也可能不是一,对不对,也可能比方二啊三类无所谓啊,那么我们现在就想说什么呢?比方说它有好几个一,那我是不是应该他去。
06:33
聚合一下,所以大家看一下来,我们写上它叫点,我们叫做reduce啊,咱们叫reduce,这个reduce当中,大家看一下它里面是不是一个一个的ta啊,所以我们写个T2对不对?诶咱们这么来写啊,嗯,写完以后,那么你记住了单词是不变的对不对?单词不变,我们只需要什么东西啊,我们叫T一点,诶不对,我们应该返回一个ta,因为它这边全都是ta嘛,我们返回要是ta,所以T一点下划线一,记住单词不变,然后T一点下划线二,再加上T2点下划线二,这是我们的数量吧,所以说你这么写完以后,同学们看一下来,我们点一下叫VAR回车,回车以后这个其实就是word,它是什么?它就是那个count,所以说大家看你根本就不需要别的,你只需要返回它就行,它就是word count。
07:30
它就是,所以啊,我们直接返回啊,其实你要不返回,你直接把它去掉,其实都可以能明白,同学们能不能明白,我们现在做的其实就是个word count,所以啊,这个其实都可以不需要啊,你直接返回它就够了,这就word to count,然后给它来啊好了,同学们,我们现在呢,把咱们程序稍微的变了一下,变了之后呢,我们在这个地方你就会发现我们的结构变成了一个tale,然后呢,我们对那个相同的单词的那个V做了我们的处理啊好,我们来看看我们的结果怎么样,来运行一下,运行的结果跟咱们之前是否相同呢?我们这个可以看一看啊。
08:12
好,同学们看现在呢,我们的这个结果已经出来了,没问题吧,咱们这里两份文件啊,我们的hello skyla hello Spark,然后这边呢,有一个sky hello Spark,所以我们的结果是不是正确的呀,同学们,所以啊,我们说了不同的方式其实都可以实现同样的功能,好不同学们。
我来说两句