00:00
好了,同学们,那么我们刚才呢,已经给大家写了八个能够实现world的算子了,其实按理说已经不少了吧,但是还有些算子呢,我们没用上,比方说咱们的这个reduce,你这个reduce其实就是聚合的意思,对不对?那我们单词word聚合在一块儿,那不就形成了word count吗?那所以我们的reduce应该也行,那我们来试一试啊来。嗯,把这个呢,我们拷贝啊,拷贝咱们看看,嗯。好,那么我们这个地方的我们的words呢,然后呢,放过来,我们写上点,咱们叫做reduce,这个时候大家会发现一个现象,什么现象呢?我们会把数据源当中的每个数据两两做聚合,返回一个结果,并且这个reduce算子的最后结果,它是一个什么植物窗。他跟我们数据源当中的数据的类型是保持一致的,可是这是我们最终想要的吗?不是,我们最终想要的是不是这样的类型啊,同学们叫做word和count,那么而且还是多个对不对?那你多个的情况下,那不就是这个样子吗?同学们看我们叫word count啊,还有我们的word count,嗯,来啊,写上word count,所以啊,你返回的就是需要这样的map,但是呢,你的这个地方数据是字物串,那么类型不匹配好像用不了吧,他当时反过来一想,那如果让它类型能匹配,那是不是就可以了呢?
01:33
什么意思啊,你现在不就是一个单词吗?那如果我把一个我们的word变成一什么呢?变成一个map里面是一个我们的word a1,那这个时候它不就是word count吗?类型就一样了,类型一样的话,你返回结果也一样,那不就OK了吗?对不对?同学们,所以啊,我突然发现好像是可以的,那我们就把这个去掉了,去掉了以后大家看一下来我们的ver点我们叫做,诶先别先来这么写吧,咱们叫map,我先把咱们的单词呀,诶给它一个一个的单词,先给它变成我们的map,所以我们muable点我们的map,因为这个muable呢,操作起来方便啊,所以我们写上一个它,然后呢括号,括号以后再写个括号,我们叫word给他个一,你这么写了以后,大家想想,那是不是就可以变成这个样子了?呃,我们写上啊,咱们叫做就叫做map吧,Word吧,好不好?
02:34
诶,咱们这么写啊,嗯,写完了以后,那么它点我们的reduce,你会发现这个不就是map和map了吗?所以我们写上啊,咱们叫做MAP1和那个MAP2,那你最终想返回的是不是就是map啊,诶就是这样,那你这样返回的结果其实就是我们的word count,诶,就是它,那我现在一打印就应该没有问题,对不对,所以我们给它来print,咱们叫word,诶,Count,嗯,好,但是你这么写它仅仅是语法能够运行了对不对,但是你的这个数据并没有真正的把两个map给它合并在一起,因为我们这个的hello,啊,Skyla hello Spark,你现在只是独立的map吧,我最终是不是应该把他们独立的map合并在一起啊,那怎么合并?那说的简单点,相同的K那个V做聚合,那么不同的K是不是应该做累加呀,所以说大家看一下我这么来,我把那个MAP2点,我们叫for it每一个。
03:34
遍历一下,然后呢,用一个模式匹配叫case,我们叫做什么呢?叫word,诶和那个count好了,你这么写完以后,那么我们现在干嘛呢?我们得去把它旧的值取出来吧,所以我们的这个叫做map一点,我们看看能不能取到咱们写上啊,咱们叫get or else,然后呢,能不能取到这个单词,如果取不到,给他一个什么我们的逗号啊,0L。
04:01
然后再加上什么count,这是我们新的那个count,然后呢,我们写上啊,咱们叫做new,咱们的count,哎,叫new count好了,那么你有了新的值以后,我是不是应该把MAP1干嘛呀,给它更新一下呀,所以点咱们叫update,然后把word呢,把那个new count给它更新一下,这样的话呢,咱们这个MAP1的值就变成最新的了,然后呢,你把MAP1的值给它返回不就完成了吗?所以这样的话呢,就实现了两个map的合并,这个我相信你们之前是做过的,对吗?所以我们现在呢,一块儿呢,把它来看一看,我们这边能不能运行啊好,那我们现在运行一下,看结果。看一看我们写的这个叫做,诶,我看把这改一个啊,咱们这里呢,稍微的变一变,嗯,这个呢,我们写上啊,咱们叫做reduce啊,咱们叫做reduce反过来啊。好了,大家有没有发现HELLO2SKY181没有任何问题吧,所以这就是我们现在的这种操作完全是可行的,还有老师,那既然我们的re就是可以,那咱们其实还讲了一些方法,比方说咱们这个叫做嗯,咱们找一下咱们叫做那个aggregate,咱们叫做我们的food的行不行呢?那我们看一看,其实你会发现是不是一样的,因为你把初始值拿过来了,我可不可以把map作为初值传进来,可以吧,那么分区内聚合,分区间聚合是不是还是word count呀?所以这个aggregate和这个我们的for其实是完全都可以的啊,但是我们这里就不给大家详细的去讲了,好吧,我们写上啊,咱们叫IGG agreegate嗯,啊,这个大家可以作为练习呢,自己来做一下,因为咱们的reduce这个思路,如果你能明白的情况下,那这两个呢,问题就不大了啊是这样,所以呢,我们写上90,然后呢,我们写个11对吧,嗯。
05:52
嗯,把上面这个呢,我们改一改啊好了啊,就是这么个意思啊,就是我们现在呢,就讲了11种不同的算子来实现咱们的word好吧。
我来说两句