00:00
好,接下来呢,我们介绍一下这个test input啊test input呢,它是这个,呃,默认的这个这个input啊,这种梳理方式啊,那它呢,也是属于这个范围音不通话的一个实现类。那给大家思考一个问题啊,在我们大数场景下运行的这个map流程序,输入的数据格式有很多种,比如说有日志文件,二进制文件,还有数据库。对吧,多种多样,那你如果只用默认的这个text,能不能处理的了多种数据源啊,很显然不能,对不对,哎,所以说呢,呃,这个fair input下面啊,给大家提供了这个比较多的text input key value text input,还有online,呃,Combine text input,对吧?啊以及这个自定义input都可以进行实现,那这里面像这个呃,以前online啊,还有这个k value啊,啊之前都讲过啊,那新版本呢,我这里就不讲了哈,因为呢,在企业里面用的比较少啊,用的比较多的呢,是它和它。这两个。行,那刚才其实我们看过这个对应的源码啊。给大家补充点知识点,呃,这个源码会看吗?刚才已经看了吧,对吧?啊聊到这里面,呃,Fair input下面有一个online。
01:06
泰摩曼打开它,打开它之后,你看它继承的发摩曼,看它的K和Y流是什么。是long和。还记得我们输入的map当中KV,输入的KV和输出的KV吗?那输入的KV是不是就是long right ball,偏移量以及呢这一行内容输V啊,就是它,哎,就是这么来的哈,啊,然后包括这里面再往下看,嗯。这个太音普通话,这是它的一个方法。这边有两个,一个呢叫record reader,另一个呢叫is splitable,比如说判断这个文件是否可切割,这刚才说了,如果你是压缩文件的话,是有可能不支持压缩的啊,不支持切片的。那有专门的能够进行压缩,同时又支持切片的这种算法啊,那后面我们再说,那同样的来看一下这个record reader,那它是这个file input方案里面的一个核心实现类。
02:03
这里面你看这里面方法里面干什么事,说他创建了一个record reader,那这个record reader怎么来呢?是通过它来返回的。他给他返回了一个叫line record,从字面含义上你能感觉到,其实它就是按行进行读取。哎,读取一行行信息,然后进行后续的一个计算。这是太,那我们再来看一下别的哈,别的combine呢。Combine test,那它也是long test没毛病,那再往下找我看一下K。K86你看它的K86,哎,输入就就变了,它的输入是test,输出也是test,啥意思啊,它这个切割有意思啊,它是这样的。哎,它中间用一个切分割符啊,你可以选择一个分割符,用什么进行切割啊,这一行内容可以切啊,那切割出来的第零位,第一位第零位呢,就是它的K。
03:00
后面这些内容就是它的value。那这样去处理哈,也说KY6它是这么去处理的,那后面再来看一个啊,有一个N赖嘛,嗯,N online它是怎么切割呢,它是。把多行内容放在一起,一行一行去读。多行一次读取多行,因为我们这个test是不是一次读取一行啊,那你读取一行他觉得不过瘾啊,我一下多读取多多行,然后再来统一处理啊,效率要高一些对吧?嗯,那像这个T摩呢,呃,这个combine test摩呢,它的这个处理方式啊,它是呢一次读取一个文件。啊,一次读取多个文件,把多个文件放在一起,统一来整体的进行处理。哎,主要是来解决这种小文件的场景啊,比如说它是1KB,它是1KB,它是1KB啊,2KB1KB1KB,那这种我就可以包裹在一起切割成一片处理多少啊,因为一片的话只开启一个map test,那一个map就是1G内存,一个CPU,那处理起来资源就大大的节省了,你反过来你这里面要开六个对吧,你开启六个,那6G内存,那一般的小服务器都起不来。
04:07
行啊,先有个印象,那回来啊。这是这块的一个了解,那I慢呢,很显然它就是按照这个嗯,I行进行一个切割,对吧?这是输入文件一行一行一行的切割,那么它这里面呢,它的K是谁啊?嗯,也就是说它的K的是对应的偏移量啊偏移量那Y6呢,Y6对应的就是这一行内容。啊,一行行内容,那这咱们写过过了看看啊,对它呢,就比较熟悉了哈,只是给大家总结一下。
我来说两句