00:00
好,接下来呢,我们写一下这个reducer哈,呃,创建一个类。Reducer好定一个类,然后呢。继承reduce方法21REDUCER OK,然后呢,写它的泛型,那它的这个KV也就是map的。对吧,输出啊输出,那map输出呢,是test和罗宾,也就说电话号码和对应的变对象,那再来那reduce最终输出输出什么,它最终输出的是不是仍然也是电话号码,然后对应的这个上行流量下行流量以及总流量啊好所以说这就定义完了,那定义完之后呢,下面重写它的reduce方法,OK。那在这里面,首先他是谁?他是不是就是手机号,那这个呢。它是一个集合,集合里面存储的是相同手机号对应的币。
01:00
那我们是不是要把这里面相同的这个罗宾in的内容给它进行一个累加呀,哎,好,那这是我们要做的事情。那我们就循环便利他们。记住吧,嗯,电力集合哎,累加值,哎,把这个上行流量和下行流量进行一个累加啊第二。For OK,循方便例,那这里面我们要累加的值啊,包括上行流量还有下行流量,那这面要定义一个,比如说LA up to total up,对吧,哎,总代的加和啊李加值定个零,然后了。嗯,来一个。嗯,到等于零,哎,这样先初始化学值,然后下面呢进行一个累加。
02:02
它加等于Y6.get,哎,那我首先获取的是上行流量,然后呢,Total。当加等于value.get down flow,哎,这样进行一个相关累加,好。那这里呢,属于这个便利集合啊,累加相关的值,那下一步呢,进行一个第二步进行封装,封装输出的out key和out v,那好首先看一下那输出的这个K有没有。Key我们传进来的就是手机号输出是不是还是手机号,那他有那对应的这个输出的这个value values flow b,那它有没有,目前还没有,那我们需要创建一个private follow b,别找错包了啊好啊follow b,那这个呢是outv,等于又一个罗好拿下。
03:06
拿下之后呢,对它进行一个封装,那所谓的封装呢,就是set,首先set uplo total uplo OK out v.set some flow,哎,Total down,然后我们再来一个out v.set some,那这样呢,就将这个上行流量和下行流量呢,进行一个累加,得到对应的总流量,那最后一步呢,第三步呢,就是contexttest写出。写出那用这个contest.right right,那key呢?Key就是你传进来的这个key手机号。OK,那Y6呢,Y6就是对应的这个out v。OK,那现在呢,就已经写完了。那写完之后大家思考一个问题,说有同学说这个能不能提出来?
04:02
能不能提到外面?思考一下这个reduce方法什么时候掉一次?是不是相同的K?然后都能进入到这一个方法里面执行一次。那好,那如果你放在外面的话。是不是所有的K的上行流量和下行流量都得加在一起啊,那是我们的含义吗?不是,那好,那这得拿出来。那。我不放在这儿,我放在这里面行不行。我放在这里面,那还能实现累加的效果吗?那每次一进来上来先清零了,上次累加的结果没了,哎这个这个也不合适拿出来,哎,就放在这那行,那这个呢,就是整个这个reduce啊,我们编写的这个业务逻辑代码哈。
我来说两句