00:00
好,刚才呢,我们是执行的官方案例,为了测环境,接下来就不是为测环境了,就自己解决一些需求,真正的要做一些分析了吧?OK,那接下来我们要干什么事呢?看一下第一个MY,我们是这样的,将fruit,刚才我们不是有个fruit表吗?它的一个部分数据通过MR啊迁移到杠中,也就是说此时我们的需求啊,需要从h base读数据,经过MAP6最终写到h base当中,对不对?哎,我们就要做这个事情啊,至于你要导部分数据或者全部数据,这都无所谓吧,这是你的业务是不是啊,就是你map或者是reduce这个方法里边做的事情嘛,哎,导部分数据,那我们导一个它这里边有name有color了,对吧,我们只导name可以吧,就是将当一个rie加name给它导到这个输入的MR中台妈中这样的一个需求,那我们接下来写代码这边再建一个帮。抗点。爱的硅谷点。
01:01
MR1,我们会有两个自定义的,一个MRMR这个包,OK,把这个东西都关掉包那写六有三个类是不是啊,还还会写吧,忘了差不多了吗?然后fruit reducer。先好,然后还有一个专类吧,就卖方法对吧。或者叫runner也可以吧。那些我们卖。那之前注意我们此时写MV6的任务,还需要导哈度的一些家包吗?不需要了吧,因为你看这个价包里的,或者说你能从这就能看出来什么。L一下label,是不是这个里边就已经包括了韩国的相关加,也就是说你在导这个什么客户端的时候已经把什么。
02:09
来。相关的,你看一下这。这块都是吧,都哈相关的吧,就已经有了,就已经有了,只不过他是点了,而且告诉大家在。咱们学习环境当中呢,2.5.1的,我测了是没有任何问题的,就是到时候在2.7.2的一个加宽上好没有任何问题的,OK,那这个地方是不是要继承一个,之前你们继承的是map是不是?Map,而且如果说不不定义那个input form的时候,它是不是默认从一个文本文件里面读啊,而且一行一行的读进来,对吧,但你要注意现在是从哪读。从base读啊,因为我们是要迁移数据对不对啊,那你想想看,如果说你这个地方记成ma的话,你是不是要自定义一个input。
03:02
因为你想想看你这个member读的数据啊,在这是不是从这个里边什么date下,然后找一个目录,而且读的还是一个序列化,就是自解码啊,对吧,他做解析非常麻烦,那其实在HB当中呢,他给我们提供好了。这个map啊,他叫什么叫table。Table map是h base map是六次包下的,看见了吗?啊,它提供好了这个map,那它集成的它里面就自带的有一个。Input。就是为了从。H表里边读出去,H表里边读出去,OK,来看一下这个地方要有那个什么泛型,对吧,我们看一下在ma当中它是不是有,就是你你记承的,如果是map的话,它有四个了,是叫什么key in。Value in key out value out吧,就是输入的输出的一个类型,那我们看下这进去。
04:04
没有他他继承哪啊,他核心的还是没吧,他把你这个地方给写死了是不是。是一个带的数组加一个result,这个result好像是一个什么。它跟什么一一对应,跟UK11对应是不是,而且这前面既然是一个半的数组,那KY6它这个地方是跟UK11对应的,那猜一下它的K读进来K是什么?这个地方是不是读进来的KV啊。它的V跟这个rookie是当时我们学的ae对应的一个关系,就是一个rookie对应一个result,那想一想这个东西是什么?猜一下。
05:00
不就是吗?不就是RK吗?你这个KV不就是一一对应的关系吗?对吧,啊就是RK啊,所以说它是就是按照什么RK来补的数据,然后呢,这块就写死了,因为它那个那个地方input form就已经写死了,对吧?哎,写死了那个地方,所以说这个地方你只要提供key off跟value out就够了。对吧,就不要你关心那个读的那k out跟out我们怎么写。我们K还用它的一个K岗位。可以吧,那它这个类型这个东西我们可以直接用吗?CRC。哎,这个怎么跑这儿来了。导进来好,这个后面还有一个value,是不是value,它是result一个,那这个地方呢,我把它定义成。一个一个的put对象,那至于这个地方我为什么要定义成put,等我写于丢字的时候跟大家解释啊,这个时候解释不清楚,因为这个地方其实你在ma啊,随便写,你写什么three,那个text等等都可以。
06:15
都可以,只不过说你后面的一个操作比较麻烦,比较麻烦,等我写到是来跟大家解释这个为什么要放库的,OK,那这个地方写好了之后,我们是不是重写它的一个。那方法呀,方法进来。这个东西。我们是为了将。Fruit这张表里面的,那给它迁移到from fruit-MR中,对吧,我们的需求对吧?OK,那这个地方我们知道了,这个呢是那个rookie,这个呢是rookie对应的。数据对吧,啊数据OK,那我们要迁移的话,这个result得把它。便利一下是不是?
07:00
Value点如对吧,把它编辑出来,因为一个U上可能有多个S对吧,这个还有印象吧,然后我们要的是name这一列吧,Name这一列,那我们做一个判断,如果说什么呢。点equals。等于我们什么?best.to然后里面放的是sell。点克隆它的一个什么。是不是,那是不是他一个列名吧,如果说这个地方好,我们说循环是吧。向点循环,然后把这个东西放到这个里边。C如果说它等的话,这个括号比较多是。
08:03
它相等的话,我们就把这条数据要了,不等的话我们就不做处理,不做处理就完了吧,那我们刚才说的这个是一个铺的对象啊。对吧,还是一个一个的put对象,那我们在这个里边应该是用一个put了,然后才能取这里面数据往put里面封装呀,对吧,那这个put它要一个肉key是不是看用一个。这里面放什么?直接把T放进去行不行?它的K类型我们应该给他转一下,因为它读进来这个东西啊,它不是一个,它是一个序列化的什么。数组吧,哎,这个地方要数列化了,那我们给他点get。就跟当时我们学写那个VALUE6一样,它是text类型的,我们给它转成string嘛一样的,因为你这个它是一个序列化的啊哈,当时序列化的你没法处理,所以说呢,你给它转成这个半成数组。
09:01
白的速度OK,那这个地方就是构建负的对象,负的对象然后这个地方是。这个地方是便利是吧。便利数据啊,当前一个如下的数据,然后选取我们想要的呢,我们想要的是不是那么然后接下来我们干什么呢?是不是往这个put里边添加数据啊put点。看一下它有一个爱的。Cel就是说你不用把那个什么当前我们不是找到这个cel是我们要的吧,对吧,你就不用把它那个什么列足列名值给它取出来了,你直接可以干什么。把这个笑给他扔进去吗?把这个cell给它扔进去就OK了,哎,它里面可以放这个cell,你就不用说添加,把这个取出来,然后再给它塞进去了,塞进去了OK,那else,我们不做任何处理,是不是color的那一列我们就没取啊,哎,Color的那一列我们就没要,那最后在这个地方应该是等到后续完之后。
10:11
context.right对吧,IK这个K啊,我们直接还是K不动,那value就变成了咱们的自己的一个put对象。对吧,这就是在麦克端处理,将数据写出去,写出去OK,当前我们的一个业务逻辑啊,是不是做的这个选取内嘛,那你既然把数据都全部的数据都读到了,你想做什么count类似的都可以吧。你是不是将它的一个rie啊,作为K传出去的话,或者说你将一个什么其他的一个内容,将这个值里边某个列作为K传出去。传到Y6,传到reduce端去做什么聚合啊,类似于刚才我们看到的什么counter这种类型,是不是都可以啊。啊都是可以的,那只不过说我们业务呢,相对来说比较简单一点啊,比较简单一点OK。
11:00
好,那接下来这个是对吧。
我来说两句