00:00
好,接下来呢,我们来看一下MAP6的一个编程规范,那讲它之前啊,我先把这里面把这几个图定出来,比如说看一下这个官方源码,对吧,它是怎么做的。把两张图顶上。好定完之后呢,接下来我们开始讲啊啊第二题。那看一下这个编程规范。呃,用户这个MAP6编程啊,一共分为三部分,一个是map reducer,还有一个是driver固定写法,哎,相当于这种八股文的这种方式,你按照他要求去做就行了,因为这个map它是一个框架,对吧,那你就得遵循框架对应的一个要求。来看第一个map计算,第一件事呢,说用户自定义的map要继承自己的负类,什么意思,把这拿过来。看一下你用户第一个类,那你必须得定这个继承对应的系统的这个map,这没毛病吧,对不对,那你得按照你的要求去做啊,这是第一条,那接下来看第二条。
01:00
第二条map的输入数据是KV对的形式,之前咱讲过输入的数据是KV对的形式,哎,那这里面的K是什么,V是什么?给大家简单说一下啊,比如说你进来的是一个单词Spark。哎,是吧,那它的K是什么呢?K是这一行的一个偏移量,比如说第一行这是零,然后一二。三啊12345,再加上回头换行啊六那相当于是这种角标对吧,那第那这个第一行呢,K就是它,然后呢,V是谁?V是这一行的单词,这一行的内容,比如这一行内容就是SPA。对吧,那我下一行,比如说下一行呢,是哈。是吧,那哈喽,那我就是六,比如说从七开始,那七,然后哈喽。那我这一行还有别的单词呢,还有一个have。那我再放一个have。也就是说这里面的K呢是偏移量啊,是偏移量,那么V呢是对应的这一行内容。
02:03
好搞定,那再往下走。下面来看说map中的业务逻辑,写在map方法当中好看一下。哎,如果你要想实现map基站的这个业务逻辑,你会重写它对应的map方法,在这里面去写对应的业务逻辑。OK。这下。Map的输出数据是KB对的形式,那你看吗?Map的输出要求是KV的形式进行一个输出,那至于这个KV是什么类型,那跟我们的计算逻辑有关系,等会我们写word的时候啊,再给大家详细说这个K怎么定义,V又怎么进行定义。再来说麦克方法,对每一个KV调用一次。这个怎么理解,哎,对于初学者来说啊,这个不太好理解哈,那这是我们的迈克方法对吧,那说啊,进来的这个每一个KV调用一次,那刚才咱们说了谁是K谁是V啊。
03:06
这个K呢是偏移量,V呢是对应的这一行内容,可以是Spark,可以是hioop。啊哈。态度。对吧,这些单词,然后下一行呢,假如说十啊,然后再来一个嗯,Flink。啊,然后送送。可以吧,那记住我这里面一行内容就会进入到这个map方法一次,那下一行来了,下一行再进入一行一行的处理,哎,这是呢,说map方法对每一个KV调用一次,也就说我们这里这个KV是二行,默认的是二行,那我们就一行一行进行处理,它会调用多次,你有七行我就调用七次,你有十行我就调用十次。这是map对我们的一个要求规范,那下面我们来看一下这个reduce。把这个拿回来,首先第一个用户定义的一个reducer,要继承自己的父类,很明显定义reducer,继承reducer啊,没毛病,继续reducer的一个输入类型,对应map的输出类型。
04:13
啥意思?哎呀,刚才那我还取消早了哈,看啊卖结束之后。它是不是有一个输出的KV啊,那么map输出完之后,这个数据给谁了,是不是给reduce了?哎给reduce,那你给reduce,那它map的输出KV就相当于是reduce的输入的KV。对吧,是不是肯定。按这块是map的输出,输出是reduce的输入。再往下,Reduce的业务逻辑写在reduce方法里面,比如说它的核心业务逻辑都在这个reduce方法里面进行一个编写。OK。再往下reduce task啊,进程对每一组相同的K的KV组调用一次reduce方法,那这个呢,还是比较难理解的哈,那还是给大家这个再画一张图啊嗯,在我们这个麦克原始数据吧,啊,原始数据里面有hello。
05:07
哈,有点不好写。啊,来一个AABCCB,对吧?那原始数据有这么六个单词可以吧?哎,好,那在map阶段处理之后,它会变成什么样子呢?Map阶段处理完之后,A会变成A1。好一组,然后这个A过来,那又是A1。正变,然后B过来,那就是B1。C。对吧,那然后呢是C。B。哎,变成这种主,那好,那它会发到这个reduce阶段,那reduce阶段说每一组相同的key调用一次,那谁是相同的K啊,那这是K前面是K对吧,那A是K。那它传过来之后,它会以什么形式存在呢?它会以一一,因为我这A出现两次嘛,对吧,然后BB的话呢,也是B11。
06:05
哎,后面呢,是一个迭代器集合啊,你可以认为是个集合,然后C1。哎,这样的存储,那好,那这里面说每一组相同的K调用一次reduce,那就是说这一组A进入一次reduce方法,那B呢,再进入一次,C再进入一次。那说你有多少个key,我就进入多少次。那他至于对reduce这个相同K里面的value是进行累加,还是这个呃,乘加减乘除,那跟你的业务逻辑有关系了,好,这就是re阶段我们要处理的事情。I don't handle。那接下来呢,进入到这个driver,哎,Driver呢,这里面是有固定的这个成熟套路,会有这种标准的这种七步啊,那这里面说呢,它是相当于雅安的一个客户端,对吧?啊,因为我们这是将这个MR程序提交到雅恩进行一个运行,那你提交代码,那不就相当于是一个客户端吗?啊好。
07:03
那在实验从整体上有一个印象,那后面呢,我们会详细给大家说。
我来说两句