00:00
好,那下面呢,我们开始具体的去写这个代码,那刚才我们分析了在map阶段是不是就是切就完了,哎,切出来是不是直接写出去啊。做任何事情啊,来。继承map。那这个输入是。嗯。泰斯特是吧?这个K呢。输出是不是test最终的value呢?那是。那我拿过来一组数据啊,大家看着写。
01:08
就是一行一行的数据啊。放在这,那这一行数据是不是就往出写啊,context.right那这一行数据是不是就是这个value。对吧,那我们最终输出的这个test。也是他。需要做任何处理吗?就直接往上写就行了,那这块变成了。那变成了。那点。这能理解吗?稍微变化一下啊,这里面是不是相当于value啊,就是它,那我们写的就是它。那他就直接放在了K里面去。那这是ma,那下面呢,再写一下这个reduce。
02:01
OK。继承别丢事。那么的key是什么类型?泰斯特啊,然后这样呢,那出来吧,最终输出。泰斯特,那对吧。类是key。歪流思。方太斯特。那在这里面干什么事情?他是不是写过来这一行行数据啊。到时候往往出写就完了。那就contextest.right right什么呢?你传过来的它是什么?是不是K啊,哎,是不是。那就是这个,我写那。Y就是now点。那这里面呢,如果说这个三点百度它有重复的。没有,有可能重复的。有重不萄,是不是得还来一个循环呢?
03:01
发起。啊,防止有痛苦的啊,要注意。OK,那。这个也搞定。搞定之后,那下边到了我们这个最复杂的也是业务这个关键。Auto不打不骂,指定一塔。来,那我们继续。右键。记着。这谁?Fire。二不的map。那他这个最终输出的KY分别什么类型?是不是就是输出时的类型,哎,输出那就是test和那是。
04:02
泰斯特啊。那。那这里面他要求你去。有这么一个方法,那看一下吧,你看这个方法名叫get record writer啊。之前我告诉你们是不缺啥就来啥呀,哎,缺啥就来啥,是不是缺一个这套来就给他一个呗,多简单啊。要一个。不写错,有一个跟他重名的啊。将那个照传起来,缺一个就给他一个对吧,过滤的filter。是不是这还没有呢,那创呗是吧,啊没有就创建呗。就来了啊,来了来了,这边怎么还报错呢。
05:01
给传了一个参数啊,啊,你记住啊,你用完这个对象啊,你最好把它这里面给你提供的这些数据传过去啊,对你这个后面写代码是有帮助的啊。继续来充电。这就搞定了,不要说了吧啊。需要啥就来啥,那剩下的所有的核心业务逻辑是不是都在这里面写?啊在里面写,那你看一下这个,我这这张图。在这个reporter里面,我要干什么事情?我是不是得创建两个输出流啊,哎,两个输出流同时我还要判断你这个K里面是否包含爱博啊,哎,包含我就放在这里面,不包含放在这。是这意思吧,哎,创建输出流,我相信大家应该没问题。那关键是拿谁去创建。这个你可不知道。那这个呢,是获取文件系统。通过文件系统去获取这个。治疗。打不进去了。
06:01
大招。里面创建。坚持一下啊。创建输出档。Father love。那这个搞定,那下面我们来看一下,哎,如何来获取这个舒适零。S。点概念。啊,依然是通过这种方式啊,发这么点盖,那这里面需要你传一个这个配置信息,那么这个配置信息啊就不能扭了。要根据你这个当前啊。把这个Java的情况去获取啊。获取这个配置信息,那就是你传进来的这个参数。那这块这个异常呢,也不要抛了啊。
07:02
踹掉。那就拿到了这个文件系统。拿到文件系统之后,下面开始干这么两件事。创建两个文件的输出流。那谁说呢,FS点。可这里面传一个pass,就给你得到了一个。那就又一个pass。那这个pass路径呢,是一盘。直接写到一台。这个呢是fos。那下面再来这个是爱的硅谷的,下面再来一个。又一个pass。100。
08:05
那也是fos。那这就有了两个。输出轮有了之后,下面在哪里去写更详细的逻辑呢?这可是构造对吧?哎,最详细的业务逻辑在这往出写,真正写的时候掉的是这个方法。那在写的里面要做什么事呢?受判断P当中。是否?有爱的硅谷。那么如果有呢?如果有。写出。当爱回。对吧,如果没有。Down。
09:03
好,那下面我们来判断一下啊,那衣服那衣服这个K。K什么类型?类型对吧,那怎么办呢?转换成string是不是就OK了,点contain包含。爱的。那我是不是这边就变成了这个二级五的收入啊。那这个输出理是不是在这呢。还记得这个bug了吗?Bug什么了?有阴影没?一定要阴影啊,你遇到这种东西的时候是吧。要想起来说这个没三就会有人。OK,好,马上来。爱的硅谷点。这里面需要一个直,那这很简单,k.string.get。
10:03
将那个K变成string类型啊,然后get变成直接写出去。20号就简单了吧。按照上写就行了。拉着点right。不使劲点get。这样就写出去了,写出去完事之后别忘了一个什么呢,Close,收尾工作啊,关闭资源。在关闭资源的时候可以用iOS。第二,Close。那将这个S给我关掉。I。There close three。加谁呢?S关掉。为什么习惯于这个close呢?你看一下底层哈。他是不是给你判空了,同时给你抓这个异常了,哎,要不然是不是你得自己写呀,哎叫他的话就省事了啊。
11:05
出来,那这就叫。那这个写完了,哎,下边呢,开始到了我们的主驱动了啊就。下一个驱动,然后来。运动类的话。那把我这个代码呢拿过来啊。那个会超。得超过他。小书包了啊,注意知道吧。这个三个类没问题,这个输出呢是test。
12:01
哎,这地方是不是添加了一个刚才我们定义的这个摩啊。一定要注意啊,就关联进去,否则的话跟你的代码就没有任何关系了啊。在这呢是输入。那这边还有一个地方。有的地方可能同学不太理解,这里这已经设置了最终输出的路径,为什么还有一个赛,还要赛最终的输出呢?其实啊,一会儿你看的时候,你会知道这里面它还有一个标记位,就是success是否标记位啊,哎,成功虽然说它一个大小是零,但是还有那么一个文件啊。啊,他是为为他而准备的啊,所以说这地方呢,还必须得设置啊。OK,那我们快速的运行一下input out put2下。没有吧,OK。出来一个爱的微博,这个套先删掉啊。阿,微博other,然后CRC3RC,还有一个OUT2,你看一下奥二里面是不是只有这么一个文件大小是零啊,就是一个标记而已啊OK。
13:09
的成功了,再看一下里面。二五对吧,没毛病。来看一下下面二段。是不是变成一行了?哎,那变成一行怎么办呢?不来工人了呢?来到你的reducer里面去,在这地方你在写这个往出写这个P的时候你。可以在它后面加一个杠R。杠呢?杠二杠是学会说话啊。那怎么办呢?拼接一下呗。好,那也就是k.to。拿到它来。然后呢,这个line。等于。加上拼接上一个杠二。
14:08
那之后那这个line是不是要写到这个K里面去啊,那这个K得定义对象了啊。又一个test。的是PE。只不过呢,这个K呢要一下点。赛的。那这就结束了,那我们再来理解一下啊,看看效果。把这边都删掉。啊,成功了之后,我们看一下阿谷没问题啊。是没问题啊,哎,这就OK了哈,所以说这个就是自定义,Out不mark。
我来说两句