00:00
好,我们分析完这个案例之后,下面呢我们开始实操。首先,第一步。准备。经。黄金的话就是创建一个美容工程啊。打开LIS。然后呢,创建一个内部另一个project。没。Nice。创建。然后再来一个。com点艾特回谷。那这个是M2啊。杠。好,Finish。
01:03
创建了一个没有工程之后呢,把这个。这个依赖了。依赖的话在这儿呢。这有详细的这个步骤哈,非常详细。拿回来。那这个依赖呢,简单解释一下啊。第一个这是什么?英的单元测试是吧,啊测试下面这个呢。日志是吧,那再往下呢。通用的这模块框是吧,再往下客户端操作啊,然后是ADS。那这就OK了。准备。准备之后,下面我们还有一个log附件在这里。建造附件是为了干啥的?打日志的是吧,啊或者。的话会抛一些这个。
02:12
这个也搞定了,下面呢,在这里面建一个那个。放点爱的微博点。那这个搞定搞定之后呢,下面我们开始写程序啊。那写程序呢,有三个类要写,一个是一个是生,一个是driver。怎么。从那个版本开始。创建一个类啊,这是麦克阶段的啊。整个外部阶段的一个处理,那外部阶段呢,他第一件事要干什么呢。
03:01
继承继承谁?麦啊,继成麦,那你这个包看好了啊,拍宝六。这里面包括我们后面程序的时候,这里面涉及到大量这个包啊,导包千万别说了。技能,它那这里面需要你写四个参数。第一个呢是拼音。这个是。卖收入什么意思啊。数据的P啊,输入数据的P。那这里面我们定义了什么呢?你看官方的是是吧,其实准确一点的是。这一类型啊,就写他写其他的报错。因为后面呃。它是含的一个偏移量是吧,内容。电量我刚才说过了,这是从零,这是到19。然后在这个开始呢,就是20。
04:00
啊,你这到比如说到25,那下一行就是26。是这么玩的啊,这个呢是默认的test,一步的慢,它的类型后面我还会讲其他总数据的类型,那么它获取的这个东西就不一样了啊,现在的默认值是这种方式啊。那好,那这个是输入偏移量,那下一个是不是就是。输入数据的value。那这个角存在这里面定义的类型就是。Test其实就是string类型哈。这个包别导错了啊,是嗨度吧L下的,别导下面的。那再往下呢,这个是输出数据的类型。那这个是怎么选,怎么设置呢。
05:02
最终我们要输出的数据是什么样的呢?是这样的。爱的硅谷。然后再来一首爱是。少少。那这个呢,就是输出的P,这个就是输出的value。那么这是什么类型?受他来讲类型啊,啊对。那最终这个是Y0类型,那也就是相当于数字对吧。不是那种感觉是输出的。不一样,那这个类型呢,它就是。当然,你写八出来的包也没问题。是可以的啊。不过呢,它会影响你这个它是作为reduce阶段的。
06:03
因为麦克处理完数据是不到丢散。那你这块写什么,Reduce的输入就写。什么就行?那你这写完了之后,你发现。没有任何提示的。那我们来看一下这个麦类里面有什么,按住感控键点进来。进来之后,这个你们有些同学可能关联被关联源码是吧。过来两汇报。那这是麦,看一下这里面有哪些内容。首先第一个叫。上下文这里面封装了你这个整个程序运行的啊,大量的一些核心方法,后面呢,我们会着重的去使用。啊,先往下有这么一个它上下文。这两家呢,是一个set up方法。这什么意思呢?Card ones被调用一次。At the beginning of the test。在这个任务开始的时候被调用了。
07:04
这意思吧?大家往下。这一个的方法。那类的是Co vans。分一血皮六。就每次这个K都会掉一次。都会调一次in the input啊这个是输入的一个切片,切片。概念慢慢说,Most applications啊,几乎大多数的应用程序over this。重写A个啊,But is对这。是默认的一个功能是吧,所以说要求你这个真正的这个用户程序必须要重写它。大家还有。这是called one at the test被调一次。And end the test。任务结束的时候叫你是吧。
08:01
这样下。这个是整个程序把上面那些函数全部给串联起来的。这是软方法对吧,软方法首先调用的是。那你想一想,在大里面一般会做什么事情呢?很显然是初始。初始化的一些程序都会放到这个set里面去。之后下面这叫while循环。调用map方法。那一次是读取。是不是一行数据啊,一次读取一行数据。那之后翻下来,翻下来表示到了这个程序运行结束之后。C1该做什么事情呢?升一些关闭资源啊,收尾的一些工作啊。对这个前面的一些汇总操作。所以说这个就是整个这个迈的一个编码。
09:00
看起来还是比较简单的好,那下面呢,回过头来,这里面要求我们重写的慢方法。回车。自动就齐了啊这个呢就删掉。不技能的列。之后呢,这里面这个刚有点长。这就OK了,比较清爽一些。那下面我拿过来一组数据。这个呢,是每次循环进来的一组数据。他是不是一次读取一行啊。啊,那第一次的时候,那我这个删掉也行啊。就把这个第一行读进来了。读进来之后,首先第一件事儿。它是什么类型呢?读起来的。
10:02
T类型对吧,那我们要把它转换成。类型是吧,啊,那就是。那这个值呢,是。卖了吧,看。你看这个类型啊,拉出来的宝,拉出来的test test。那这个map呢,这个输入参数呢,就是你这个里面。这类类型是一对应的,那这个呢表示行的偏移量,这呢是这一行是这内容,也就是X5这一串数据。那这一串数据呢,我想把它转换成实力。是。第二,兔斯基。这一行就有了。还是它那在一行数据,你看中间是不是有空格,我是不是得把它切分成多个单词啊。
11:02
谢歌单。怎么切呢?赖点儿。福利特是吧,切割。切割完之后给你返回一个。那切的时候按什么切呢?空格先啊。返回一个数组,那这个数组里面就是。是不就是相当于是第一个,比如说STRING0取得它,STRING1是不是取的它。那既然这个已经早就循环写出。怎样去关系充当好一起?便利他呀。便利他之后我用这个con。第二,这里面有个方法叫right。写出去。其实写到关于缓冲区里面了。
12:01
这个概念呢,后面会说啊,马上先统计到后面。那写呢?这里面要求是不是以单词为K这个单词的次数value。那这是这是。这是,这是value。那这个K的类型是。类型是。那这个呢。那。这个P这么一放,是不是得P点。晒晒谁呢?Word。那你说这个单词它就可以为T了。那Y6值是able。
13:00
那这个是。就完事了。有人说,哎,这个是K。设置的是这个单词,那Y6呢是它。他的话是不是。点。也就说最终这么设置完的结果就是什么呢?上面这个地方,这个是at硅谷。那这里面存在次数的,其实。是这意思吧?那这就喜欢了。只不过这里面问大问题。你这循环一次创建一个对象,再创建一个对象。这。是不是性能上很差劲的啊,而且你这个卖方法。
14:00
是不是也是?一直在一行一循环,一行一循环。那你这里面是不是得造N个对象?那占内下是不是耗你几大的内存呢?那怎么办呢?踢出去。到外面。那这就搞定了,那这个S1呀也。不用每次都晒子干什么呢?直接默认啊。添加一个机。这个构造方法里面就有。只不过这个得晒一下。就OK了,这就是mark阶段。的一会儿呢,带大家去debug一下啊,看一下是不是这么走的。里面的程序是不是这么玩的。
我来说两句