00:00
好,接下来呢,我们来看一下自定义out put不这个案例,那看一下需求说呀,过滤一个输入的日志,那在这个日志里面呢,如果说包含at硅谷,那我们就把它输出到E盘的at硅谷lo这个文件路路径下,那如果不包含at硅谷,那就输出到other。啊,因为这个。呃,上威武是吧,嗯,号称这个开源界最牛的啊,最牛的一个网站,来看一下,把它打开,这是最原始的输入文件。这个文件过来之后。诶,其他我不做任何处理哈,只是做一个。判断,判断你是否包含艾特,比如说这个这一条信息包含艾特硅,那我发送到这其他的所有内容。原封不动的发到另一个文件里面。就是把世界上最强的网站过滤出来,实现这么一个功能。怎么实现?嗯,那你看啊,遇到这种需求之后,你首先在脑海里面要快速想一下我的麦怎么处理。
01:01
我的reducer怎么处理对吧?那我如何来最终控制我输出到两个文件。思考一下。那我们来看一下详细的一个需求分析,把它打开。上面是需求描述,输入数据长这样输入数据,我们期望的是如果你包含ID股卡发送到这这个文件里面,就是只有它,那其他的网站。放在这儿。对吧,这不就实现了吗?啊,那实现这个需求好,那我的麦怎么办呢。我的radio怎么处理?你看啊,我map输入的KV是进来的偏移量加上一行内容,那我map阶段需要进行切割吗?有必要切吗?没有是吧,这就是一个整体啊,那没有必要切,那我是不是这个康泰的直接往出写就行了,那它的K什么。Key是不就是这一行内容啊?啊,你输入的KV变成了V对吧,那我的这个啊变成了K,那我的V是谁呀。
02:05
We,没有对吧?没有我们想要的内容,没有呢,我们可以用now right。进行一个占位就可以了啊,这个是map,那么radio咱怎么办?Reduce,通常我们是聚合呀,那你把这个数据,比如说这个3W点二硅五。然后now right包发送到六之后。那reduce是怎么聚合的?或者说我有没有必要聚合?没有必要,因为我们还是说原封不动的输出嘛,对吧,那在当中我也是直接。哎,仍然继承这个上一个这个啊,We now。然后最终输出仍然是V啊right方不就行了吗?不动那不动说海哥,那你最终怎么实现,我将两个呃创建两输出两个啊文件对吧,艾谷输出到这,然后其他的输出到这呢。别忘了,我们还有一个out put比是从reduce调输出来之后,它还要经过一个out。
03:04
那有了它之后,我们可以干嘛呢?哎,我们可以创建两个输出流,在这个创建一个类继承往出写,然后创建两个流,一条流呢是未来往I的硅谷里面写的,还有一条流是other。好,你创建两个流没问题,可以输出到两个文件。对吧,那两个流,那谁放到艾硅谷,谁放到other呢。我们是有那种if条件判断的,我判断你传过来这条内容里面是否contains包含at,包含艾,直接往这,不包含at往这写。这不就行了。哎,就非常简单啊,非常简单,那大家再思考啊,那我现在呢,只是自己定义一个类,继承了record writer往后写。那跟你这个上面这个代码有关系吗。如何建立关系,咱们都是老司机了对吧?哎,以前像什么这个呃分区啊对吧,还有commander啊,你要想跟这个程序建立关系,必须在驱动程序当中设置一下。
04:04
哎,我设置一下out put ma更改为我按照我这个自定义的这种方式进行输出不就可以了吗。对吧,那默认的是t out对吧?嗯,替换成它。这就是我们处理的一套流程啊,还是比较简单的。
我来说两句