00:00
好,接下来呢,往下讲,哎,讲一下这个三点十麦六开发的总结,那上面呢,我们把这个整个这个卖六。嗯,这些组件呢,都已经做完了,你看我们讲了多少啊。将前边从开始的这个沃尔看啊,接下来的这个序列化啊。之后呢,是往下呢,就是这个input阶段啊,Input法这里有N多种input化的这个类是吧?啊实现类包括在这块呢,主要是有这个代码的提交流程,尤其是源码,源码这一块一定要证明你看过,怎么证明你看过。接片是不是肯定能证明啊,接片是哪一个公司啊?Max里面是不是有有三个参数对吧。什么一个是最小值是一,最大值是最大值,还有一个。块大小,同时这个块大小怎么说呢。集群128兆,本地32兆,32兆是直接就拉高你的形象了。
01:04
记住啊,OK。这是这个疾病。那么街变里面还有一个什么事呢?问你128兆啊,129兆切几片?一片OK。那是不是成功的搞。定面试官啊。这是这一块。那好,那下面呢,像这个沙这一块,那就是重中之重啊,你必须得会的S,包括里面的分区,熟练掌握下面的这个排序,包括全排序啊,这个部分排序啊。20排序辅助排序啊。等等,全部都得给我拿下,包括在这里面,哎,对这个MA6提供了一个优化的手段。啊。那么也是一个双刃剑是吧。按键呢?能适用于。会手啊,不适用于。往下再往下呢,是这个out啊,这个呢都是今天讲的啊,今天呢,你回去好好消化一下啊,这个put和这个都相对来说比较难一些。
02:12
但是呢,在我们真正的开发中都有实际的应用啊。就这个在我们日后的电信项目里面。就会实际的去用,把这个输出的文件导到哪里呢?MYSQL里面去直接写到MYSQL。那像那个radio噪音和map噪音。在你一些大厂或者是数据仓库这种岗位的话。你只要写60。天天都要写表的招引。包括你写的一些circlel语句,就是你不用这个,你用的是circle,像have啊,还有SPA circle等等。你整个的1000行的代码当中。绝大多数都是造影。比如说这块要知道啊,OK,那下面是记数器啊,都讲完了哈。
03:02
那我们按照这个正常的套路给大家回顾一下。回顾一下啊。比如说。数据进来了。那进来之后你采用哪种,你不得不卖?在你的这个知识库里面,你能想起几个音符的方案?默认的肯定有对吧,哎,Test部那test你要从两个角度去考虑它。一个是切片,一个是KV对吧,那它的切片是怎么样切片的。默认按照。块的大小对吧,按照块大小啊去切片,那么呃,它是对每一个文件是不是独立切片呢?哎,单独切片OK,那它的K是什么。建议量啊V呢。这一行内容OK,没问题。那再往下。这是刚才说了啊,那下面这个k value它的切片是怎么样的?
04:05
没说没说,这就跟默认是一样的,哎,默认按照块大小去切啊,而且呢,也是每个文件独立去训练好,那它的KV变成了什么。是被它的分割符先分开呀,分割符之前的这个是。分割之后呢,是那。再往下还有一个N来改变的是什么呢?他按什么写?那行,OK,那有没有说改变他的,呃,他的KV。没改变吗?哎,没有错,那就是没有改变,OK,再往下呢,是combine combine主要干什么?合并小文件改变的是。切片对吧,啊切片,那这个切片是怎么切的。我们设置一个最大值啊,哎,最大值啊,小A这个最大值的时候都合并到一起啊哎。
05:01
连在一起啊好,那这里面有没有说改变它的KV啊。没有啊啊没有OK。那再呢,就是用户自定义的这个input,那自定义这个input方啊,呃,你要注意一点,或者说你要小心我们这里面有没有改变的节点,我们那个案例里面。没有啊,有没有这个改变他的KV。改变了吧,拼什么?哎,文件的名称或路径对吧,V呢。内容是吧,哎,那就是说改变的是KV,那你有没有考虑过他能改改改变气垫。只要哎,你要看他底层源码的你就知道啊。它那个切片机制,你是不是可以重新自己去写啊。你是可以去自己去实现的啊,这个是没有问题的,只不过说在实现这个改变它界面机制的过程当中,可能你要写的代码比较多,但是呢也是可以的啊,也是可以的,至少现在这个KV你是可以改的。
06:11
只要他是代码有人写过,他就。你就可以实现。可以对它进行一个重重写。这都是没有问题的啊,只不过说相对来说对你们难一些,但是改变KV对你来说是不是简单一点?啊,那这是这个输入阶段。那这个输入阶段完了之后,是不是就到了阶段。一个是瑞的吗?第一个阶段的,第二阶段就是这个卖。那在map里面有几个方法?几个?准确的说是不应该是四个啊。Set up啊map还有一个,还有一个run对不对,是这意思吧。三个方法啊,Map set up,这是我们对我们用户来说啊,这么几个能以可以自定义的。那么这几个方法当中,Setup是干什么的?
07:03
化时候用对吧,Map是实现业务逻辑的clear呢。收尾关闭一些资源的对吧,OK。分区默认的分区是什么分区?哈,Part啊哈。帕西帕森里面有几个参数。KV啊,肯定是三个,你看。佩奇都能打对。会场你发不出来,简直是了是吧,嗯。然后还有一个是其实是number reduce或者是number part是吧?啊这里面三个参数啊,这三个参数呢,可以组成啊,多种组合控制你相应的这个分数啊。那在业务逻辑上啊,有特别的需求,可以自定义相等分区,这里面要注意什么呢?分区号是从零往。
08:00
往上累积的啊,千万别跳过01234啊这种。的是分区。那分区完之后是不是该到了排序啊。收集到了排序,那么排序这一块你怎么能控制它的排序呢?什么排气方法呢,赖皮的。政策排序啊,想一想啊,其实呢,我们就可以实现,呃,对这个B对象呢,实现一个red compare接口,那这个就可以实现比较了啊,其中呢,重写的尔通方法,这是最重要的。那在这里面呢,如果是实现部分排序。很简单,那就是每一个文件内部有序是吧?啊,相当于分区内部有序,那全排序呢啊。就只有一个文件,那这一个文件当中有序。二是排序呢,排序的条件是两个。那你三个来去就是三个。
09:03
OK,那还有一个commander commander刚才说过,它使用的条件是。汇总操作啊,不能应用平均值的操作,OK。这个合并呢,它可以提高这个效率,减少IO传输,但是呢,必须不能影响原有的业务结果。不是所有的业务都能上啊。那comer完事之后是不是就到了?别丢死了。啊,到了这个阶段,那么阶段呢,我们能可以控制的就是这个。主。那分组排序呢?这里面我稍微改了一下啊,在你六端对K进行分组应用,在接收的K为并对象时,想让一个或几个字段相同的K进入到同一理对方。它并不是所有的都相同。再进。因为严格这个严格来说,人流团网要求他的P是必须完全一致。那现在呢,我可以稍做一个比较。
10:01
只比较这么几个阶段。就能进到一个月地。那再一个呢,是这个逻辑处理的接口,也就是说那这里面就是具体的业务逻辑三个方法。跟这个麦不一样啊。说实话啊。出那个收尾工作,然后具体的有。的是video。完了,那也就是我们今天讲的最终的。Out,不得不骂。默认时间类是test不得不。而且呢,是将每一个KV对向目标文件。它是按行输出的啊,一行一行往出写。那还有一种呢,是这个它这种输出格式呢,往往是作为下一级job的输。一个一串。然后进来,进来之后呢,可以从这里面取出相应的一个一个的数据。
11:01
因为形成这种格式呢,它会减少name note的内存的一个使用啊把。封装起来吗?对外的话,它是一个整体占用一个。一个文件的这个内存。那用户呢,还可以根据自己的需求去自定义这个outbook啊,最主要的就是改变它输出的相应的路径啊。输出到你想要的一个位置。这就是整个麦流程当中啊,开发的一个流程,开发的过程当中,你一定要想着哪些地方你是可以对它进行。自定义或者修改的。同时你可以看我这张图外面。Map工作流程这张图当中,哎,所有的画黄框的。应该是这个啊,还有这个黄框的。变颜色多。应该是变成绿化了是吧?变成绿框了。
12:04
地方的啊。变成绿颜色,谁选的?太不吉利。来看一下啊,绿框呢,它变成绿框呢,啊,这个绿框呢啊呢map分区是吧,分区排序啊,然后commander看看一下这张图当中我标记出来的,它都可以进行自定义。那么你在制定过程当中,你要考虑一下,你这个自定义完之后,如。如何影响了这个数据的走向?什么改变了他数据的哪些东西?这就是你的武器库是吧,OK?那这是卖部阶段,那这水六阶段一样。那这里面呢,就是这个reducer啊,这里面具体的业务逻辑,分组里面具体的业务逻辑,以及out不同,这里面有逻辑。这种框,那它都是可以自行自定义的。
13:01
你要对它进行一个相应的控制,改变数据的一个走向,这样呢,你在写代码的时候呢,就会游刃有余。所以说你一定要采用上面所有的这些手段去做这个。博客的共同号。你的收获会非常非常大。你想一想怎么去做,甚至好多同学直接把集团干掉。就在map阶段,全部。啊,你看我那个是,呃,分部写的,找共同好友,他就一步就搞定了。一波拿下。好多同学在这个过程当中发现自己的加油基础特别差啊。回去一顿饭,这个集合怎么定义?你们也应该会有这种体会啊啊。自己看一看。
我来说两句