00:00
接下来我们把这个累加器的方法呢,给它来实现了,同学们来咱们一块儿看一看,我们的这边来写上一个二啊,来写上一个二,然后呢,我们叫重写方法,这个重写方法大家可以看到有123456,有六个啊六个方法诶感觉还比较多,对不对,但是他们有些方法的单词还是比较容易理解的,比方说第一个叫爱,咱们在之前大家会发现咱们在循环的过程当中,是把每一个单词给它增加。增加到哪去啊,不就增加到咱们累加期的里面嘛,所以这个I呢,其实专门是用来获取输入的,所以呢,我们这里可以简单的来写上啊,咱们叫获取啊,获取累加器需要啊计算的值就是你累加器要累加,你累加什么东西啊,诶就是把每个值给它累加,那咱们知道啊,咱们这个就是一个word单词呀,对不对,诶就是这样的啊好了,那么你这个单词我要干什么呀,我们要做word count,那么你要做count,大家想想你是不是得有一个map来接收咱们的word count呀,所以啊,咱们在这个地方给他来一个叫private,哎,咱们叫private,咱们叫做嗯,WC的map啊,等于一个muable,然后点map,然后写上一个string,给个long啊,OK,翻过来。
01:24
好啊,放这边这样的话就是一个我们空的一个集合,然后拷贝,拷贝过来以后我就要看一看呀,你的这个map里面有没有这个单词呀,所以呢,我们来点,点了以后就get or else,然后把单词放过去,那万一你要是没有找到,那给个零表示的是不存在对不对,所以呀,这是我们之前map中旧的那个值。那我现在是不是来了一个了,那你是不是只需要加上一就可以了,所以要记住这是我新的一个count。啊,这是我原来的,可能有可能没有,反正呢,我们要得到它,然后呢,我加上个一,就是我当前出现的这一次,那好了,那我接下来我们这边呢,就可以来了,拷贝,拷贝以后点咱们叫update,这个update呢,我们就可以把word给它放过去,这是我的单词,然后把新的数量给它放过来,这样的话,我们word count不就等于累加数据了吗?对不对,诶累加数据了啊,就是这个意思,好,那我相信这个没问题,没问题的话,那么下面value是啥意思?
02:31
大家看一下这个value不在这儿用了一下吗?它是获取累加器累加的结果,所以它这个就是我们的累加器结果,累加器结果,那这个结果呢,我们可以直接返回呀,你上面不是有一个map吗?我直接返回这个map不就完事了吗?诶就是这意思,好,那我们再回过头来看这个,这个叫墨墨是不是就是合并的意思呀,所以回过头来同学们看这。咱们这个地方就会有一个墨子,并且画图的时候,这两个不也是需要墨子的嘛,对不对,所以啊,咱们的累加器是可以合并的啊,来咱们写上叫合并我们的啊,来合并累加器,这个合并累加器呢,应该是合并多个累加器,谁合并啊driver,所以啊,咱们的这个增加,包括我们的这个累加器的结果呀,其实我们说它都是在不同地方计算的,而我们这个墨子肯定是在driver端,对不对?好,那我们现在呢,这个地方给它来实现一下,嗯。
03:31
那么你实现的时候,大家会发现这其实就是两个累加器的什么map的合并啊,所以说呀,通过这个咱们就明白了,哦,原来是两个map的合并,那所以我们写上咱们叫MAP1,它等于当前的,诶我们的这个map,还有一个我们叫做MAP2,哎,咱们叫MAP2,它等于什么呢?我们叫other。点value,诶,这就是两个我们的world count的map,那么现在你要想合并很简单了,对不对,我们拿这个呢?我们写上叫做什么呢?咱们叫MAP2,这个MAP2点我们叫做什么呢?叫做for it,把每一个我们里面的数据拿到叫case,我们叫做word啊,点我们的count好了,那你这么写完了以后,你记住了,你拿到的是我们other当中的那个map里的那个单词和数量,我要看一看我当前的这个里面有还是没有,所以拷贝拷贝过来以后,我们点叫get or else,我要看这个单词我是否曾经出现过,如果没出现过的话,应该是个零,然后再加上什么count就可以了。
04:43
这个时候它就是一个什么new count,好,那你这么写完以后,大家想想new count那是不是就可以更新了呀,我们的MAP1,然后呢,我们点咱们叫update,你的这个update就是把咱们的word诶给它放过来,把那个new count放过来是不是就行了呀,同学们,哎,这样的话就可以了,所以啊,我们现在呢,就是两个map的合并啊同学们OK,好,那如果是两个map的合并的话,那我现在呢,准备干嘛呢?诶回过头来我们看一看这边功能都是OK的,那我们现在三个计算都OK了,还剩下上面的三个方法,那么上面的三个方法呢,首先看第一个叫is general,这个is zero呢,这个大家如果学过GALA,你应该记住,我们一旦在Spark或者skyla语言当中,它出现了这么一个参数的名称,或者说属性的名称,它就表示初始的意思啊,比方。
05:43
常说叫接value,叫零值,也叫初始值,然后呢,这个E的接入呢,就问你了,你当前是不是初始状态,所以啊,这个方法的作用呢,是什么呢?叫判断是否为咱们叫初始状态,诶就是这个意思,好了,那我怎么知道你当前的累加器是不是初始状态,我们说了你的目的就是为了累加,那如果它为空,那不就是一个初始状态吗?所以点咱们叫做什么呢?叫做is empty,如果为空,诶你就是我们的什么初始状态了,好,我们再来往下,下面叫copy copy就是复制嘛,复制一个新的累加器,那咱们就直接给它new一个不就出来了吗?咱们所谓的copy啊,给它直接new一个就完事了啊好,咱们接下继续,这个叫reet,顾名思义啊,这个reet叫重置呀,叫重置累加期,那对于咱们来讲,你重置的目的不就是为了把里面的数据清空掉没有吗?所以呢,来拷贝。
06:43
拷贝以后咱们点叫clear,诶这样的话呢,我们的功能就算是写完了啊,就是这样好,那我们现在呢,把这几个方法我们都重写了一下,我们想看看最后的结果是什么样子的,能不能实现我们想要的效果,所以咱们点击运行。
07:04
好,大家有没有发现结果出来了吧,是不是我们的hello,出现了两次,SPA出现一次,说明咱们这种方式应该是对的。
我来说两句