00:00
好,接下来呢,我们讲一下这个ma当中最后一个自定义的主件,也是out。控制数据的一个输出啊。那么output呢?这里面有多个实现接口啊,我们来看一下啊。是map输出的一个鸡肋,所有的这个map输出呢,都实现了这个out接口。下面呢,我们介绍几种这个常见的out接口。那首先第一个呢,就是系统默认的,默认的输出呢,采用的是这个test。产生这种形式。那这种形式什么特点呢?呃,默认的是采用太他把每条记录。为文本写,为这个文本行,其实它是按行往出一行行去写的啊。一会我们可以给爸爸看一下。它的键和值呢,可以是任意类型。
01:00
你看我们这最后设置输出的时候,你设置过test啊,设置过这个table。设置过什么这个那等等任意类型都行啊,因为呢,它底层呢,都调用了这个。都指引方法。啊,就把它转换成这个字符串,不管你是什么。那么我们还学过一种呢,就是那个think out。这种是不是我们在。自定义小文件的自定义。Input化的时候是吧,处理小文件用过它吧,啊这种类型,这种类型在企业开发中也是大量使用的啊,啊不要这个觉得。这个我用的不熟啊,他。能在企业中不用啊,不是这样的啊。呃,将这个输出作为后续map任务的一个输入,它往往呢是将这个数据封装到这个里面去,然后呢,下一集这个job再开启的时候去。读这个文件啊。读过来之后,那我就可以把这里面一个一个文件拆解开。
02:02
那这个文这个文件的好处是什么呢?它是不是将多个文件形成一个整体啊?啊形成一个整体,那这样是不是减轻了这个内部note的一个压力啊,啊集群内部的压力啊,减少了一个小文件的一个个数,这用内存就少了,同时呢,它存储的时候呢,这种结结构非常紧凑。占用的这个存储空间也会比较少。而且他存的时候呢,这个是名称啊为K这个。Y呢就是实战的内容,你输入这个G就能拿到相应的Y6。OK,这是这种格式啊,非常的好。那后面呢,我们还可以对这个奥进行一个自定义。啊,就说前面这几种啊。不一定满足我们所有的用户的一个需求,那。要自定义。那比如说我给你提个需求,我让你这个最终输出的文件传到MYSQL里面去。么,或者我让你这个最终的数据传输到里面去。
03:03
啊,我让你最终那个数据输出到哪呢?呃。输出到。还是一。啊等等,以及包括你能存储的地方我都可以。你怎么实现的,因为系统它肯定不会给你提供这么多,哎,直接就对应着什么,你存到RA类,存到MYSQL里面。那就需要你自己去。呃,自定义out使用场景和步骤啊,比如说为了实现最终输出啊,最终文件输出的路径和输出格式,可以自定义这个out或这个路径,什么意思呢?就是我刚才说的,你把这个最终的文件写入到MY,写入到red啊,甚至写入到不同的路径里面去。甚至我可以把它输入分类去输出。比如说输入到一路径,输入二路径,输入到三路径。
04:00
都可以及时定义。放到E盘、C盘、D盘。把输出格式呢,你可以控制它输出格式啊,比如说支持压缩啊。支持到这个写到C文件里面去。还是写到这个其他这种格式里面去。都可以进行一个控制。呃,例如呢,要在一个迈入程序当中,根据数据的不同输出两类结果到不同目录。哎,我相当于把你这个数据呢,进行一个过滤,过滤出什么呢?哎,过滤出两倍了。不同的一类放到不同的目录里面去。这就非常灵活了啊。那自定义这个不发步骤非常简单啊。一共两步,第一步自定义一个类继承啊。自定义这个一普通话的一样。只是这块换成了out,仅此而已哈,然后呢,改写下边的这个record。之前付的什么?
05:00
是不reader啊,Recorder。那其实具体改写的是它的。那这个是自定义要的不同吧。
我来说两句