00:00
好,那我们上午呢,是看了这个官方的两个案例案例,那我们就自己来写一下。啊,来写一下这个内容,就是我们要实现这个自定义的一个需求,对吧?嗯,这我们还是一样的,官方呢,它第二个案例呢,我们当时看到了是读本地文件给他放到哪了。H base集群对吧,读HDFS文件放到h base这个表里边,那我们也自己实现一下这样的功能啊,自己写一下为此的功能啊之后呢,我们第二个案例呢,就是读这个H的一张表,然后呢,给它写到h base另外一张表里边啊,做一些数据的过滤啊,做一些数据过滤,OK,那我们看一下。嗯,这个地方呢。在这个。再建一个。Com点的硅谷,然后呢,我们叫MR啊点,然后是fruit fruit。
01:09
Ma。啊,For ma还是放这个水果的一个数据啊这个啊呃,然后正常的应该还有什么。Video和。Driver对吧?啊,还有两个类,那我们把它都写一下。然后还有一个啊,还有一个driver。OK,那我们同样的要读本地文件系统。读HDFS数据或者本地文件系统,那要继承。Ma对吧?啊提成MA4个分析,那我们要写的是。对吧,然后是好,那接下来我们要给他写去。
02:05
写给reduce对吧,写给reducer,那这样啊,这个地方呢,那我们就用那无所谓啊,或者说我们这样吧,写出去,那这块我们是要将数据读进来之后。把它写给reducer对吧,这边要对给reducer,那对给reducer呢,比较简单一点,OK,我们做这个事。咖啡放在这。怎么进来的,怎么出去,OK吧,随个R,因为这块我们更重要的做一个什么。读取的一个工作啊,就是说这边的事情呢,我们不用干其他的事,怎么读进来怎么写出去就OK了啊,更重要的是如何写到的一个表里边。那写到这辈的表里边,是不是应该是output for的事?对吧,那前面是不是应该怎么怎么进来读出去,因为我们简单的只是将数据给它读进来,写个I倍的表,里边不做什么计算啊,统计啊,什么计算一个总和等等这些东西,但是你要计算总和,那你可以同样的道理,你把text这放一什吗?
03:09
In the啊,你咱们也不统计数,简单的就给它读过来,然后写出去就完了,啊写出去就完了,好,那我们看一下这个地方还是同样的复写它的一个什么脉方法,那这个地方我们直接可以干什么。点T,然后那个什么,这直接写出去了啊,直接写出去就完了啊,就不做任事,因为你只是将数据读过来,写到这位表里边那第二个reducer。那有些人可能想,那这边呢,我也不用做什么事,我直接把它写出去,因为写给什么。对吧,哦,由一个我们自定义out form,或者说官方他提供一个什么out form就完了呗,对吧,这块不行,这块你要继承这一个什么呢。叫这个嘞。
04:00
叫table。啊table,因为它这个脸看一下是哪个包的。是哈法h base,然后是这个报价的啊,这个叫table维,那这个类呢,就是帮助我们将数据写到表里面的东西。啊,写到表里的东西,好,我们同样的定义泛型吧,对吧。来看一下这个地方再。首先他肯定继承reducer,这个不用想,因为他还是一个reducer嘛,对吧啊,他只是记了一个封装,然后接下来你看他只要什么。三个,因为最后一个什么,他给你。定了。啊,他给你定了,那这个类型好像我们没见过是吧。你们之前见过的应该是那个什么方法,上午我们看的稍微看了一下那些什么方法,对吧?来这个类型点开它是一个什么。抽象类,那不能创建它的对象吗?CTRLH,你看有什么东西。
05:03
Delete。Put,也就是说你Y6过来之后,假如说我们是要批量的往你写出去,是不是应该用那个put。D的不是删除吗?对吧,写那种什么。写tab进去,写很多的一个删除标记进去,你可以用delete嘛,那另外我们是不是选用put的对吧?选用put的对象,OK,那另外他给我们写死了,就是这个负的对象了,OK,那我们回过头来reduce这呢写三个三个类型,前两个是不是确定的。跟他一样吗?啊,前两个是确定的,跟他一样往这一放。好,那接下来最后一个k out要写什么东西呢?随便了,这个时候呢,其实跟他没关系了,因为你此时是写到哪了。写到base表里边,你后面都是put的对象了,其实跟这个key没关系的,所以呢,这块它让你干什么,可以自己定义,可以自己定义,一般的我们不写那个output,因为用它自定义就行了,选那个空的就OK了啊,正常选空的就OK了,好,那这个里边我们要做什么事了。
06:19
便利。哎,我们应该先重写那个videos方法对吧。有点方法啊,这个里边呢,要去干什么。便利。160万。啊,因为这个Y64Y64点。循环循环。这个是value,最终写出去,我们应该写什么东西出去。一个空和一个。Put的对象吧,Put的对象,那put对象是不是应该在这里面去构建,对吧?那value还记不得当时我们的数据,我们哪一个数据啊。
07:08
对吧,我们还有这个数据,数据什么样子无所谓吧,你就根据你自己的数据来就行了,好,那我们首先。第一个。获取每一行什么数据?获取每一行数?怎么获取value点?点。按照杠T进行切割对吧?按照杠D进行切割,号叫V,得到FLS那。接下来干什么?是不是构建put对象啊,对吧,构建put对象,那有同学想了,那你这个里边迭代会很多次,那我能不能把put对象放外面去。按照之前所讲的put的要放外面去,然后在里面设置吗?能行吗?想一想。不行,因为不的对象有空三漏洞。
08:00
还记得吗?必须要传一个什么rie,至少要传一个rie啊,它没有空间构造,所以你只能在里边去干什么构建。铺的对象啊的另一个扑的。啊,另外一个负的okrl可以看一下,他没有空三造法。之前我们想的text啊,In the red等等这些东西,你我们想着是不是在这去写一个全局的呀,在里边循环的去用吧,但是不不一样,你用不了,因为它没有空参空造。啊,没有空大道,它至少要放一个什么rookie进去啊,Rie进去好,那这个地方的rookie我们应该是best.To Best放FAIR0对吧。画好加倍得到这个photo头像,那接下来第四步应该是给破得镜像赋值了,是不是?不的对象。赋值啊,给负的对象来赋值,OK,那这个赋值就简单了,good.column。
09:04
At,好,第一个是列足bas.To Ba列组,我们给它写s in for可以吧,正常呢,咱们如果有一个问题啊,我想这个列足啊,也不写死,我从那个卖方法那传进来有没有办法。就是我通过那个卖方把那传过来。就是我不写词,我给他传过来,就动态的传进来,因为到哪张表我也不知道嘛,对吧,我可以写多个值,在里面写一个负循环来复值,就类似于你看上午我们看到官方案例,人家这只能说写死的inform吗?是被动态的给他获取进去的呀,那这个地方如果说我想做动态的获取进来,怎么写给。能不能洗,现在说这个事儿。对吧,我想通过慢把传进来。
10:10
那种是怎么做的?From是每一次读的文件,要自己指定一下。就那个自己写的那个配置文件,是不是指定要去读一下,然后加载配置文件里面内容,但是现在我不要那个配置文件。不要。就要从卖宝马的传过来,有没有办法?能不能做这个事儿,你们忘了一个这个方这个吗。这个里边该怎么做。Get一个这个内容啊。能不能得到?
11:00
看到这还不知道怎么得到的吗?我可不可以在之后封装的卖方码,那是不是要获取job job是不是要?我在。com里边设置一个假如说面方法里面设置一个什么值啊,随便点,假如说这个com.set注意在慢方法里面设置一个我自己写的,假如说叫C f1可以吧,然后自己写了一个in for1这个东西,注意这个代码呢是在慢方法里边,就是这个在卖方法里边写。那这款我应该怎么去拿呀?Get吧,对吧,Get这块写一个。C1。就能获取到这个C1,但是既然你要在下一个方法里面用,是不是应该把它提上去,对吧,做一个什么声明,这给他什么数值,那这块你不是可以动态的把卖方法里边的数据拿过来吗。对吧,啊是这样来做的啊,是这样来做的,OK,你要知道这个点啊。啊,就是说你这里边呢,有很多参数是有可以动态传进来的,大家有两种方式,一种类似于弗,你在里边写一个工具类,写工具类干什么呢?读某一个配置文件,而这个配置文件在慢方法里边去读,不给他写死写X1对吧,然后通过参数的方式传给一个什么。
12:21
卖方法传给卖方码,让卖方法里边去读这个配置文件,然后你把所有的你想要的配置在配置文件里面给他写上,这是一种方式,第二种方式呢,是直接通过这个。刚才我们所说的context全局的上下文来做这个事,因为这个上下文里边就有我们要的什么。配置文件信息啊,配置信息comp啊,那你通过这个comp就能做到他这个把这个前面的数据给我们传过来,那这块呢,我们就给他干什么解释一下啊,要是方面列啊,第二个是我们所说的一个什么点tobe应该是一个列吧,啊列嗯,有一个列,我们叫第二个列是name是吧。
13:03
那好,那。然后。接下来是一个什么?Y6是不是百点。To这个地方写什么?FEEL0是它作为的rookie,这个东西应该放这吧,我们还得来一个放什么?Color对吧?啊,还得放个color,那这个地方就是feels。一了吧,啊一了是这意思啊,然后呢,很好,CTRLD,再来一份吧,好,再来一份in for列俗,然后来一个什么Co color第一列,然后这个改成。二。对吧,当前铺的对象有两个列吗?没问题啊,啊rookie呢,就一个是1001,然后两个列一个是Apple,一个red啊两个列一个是name列,一个是这个颜色这一类啊好,那之后呢,这个东西分装好了,那第五应该干什么?
14:09
是不是写出啊对吧,啊写出那个context。点right吧,Right那第一个是now read.get第二个就是我们这个put的对象对吧?啊,第二个就是我们要把这个put对象写出去就搞定了啊写出去那这块其实就是将我们数据给它干啥。封装成了一个。铺的对象,那这个事我在这做行不行呢?我直接写给维都写成不得的,要行不行?可以的啊,是可以的,只不过说我如果说直接在这写一个负对象,大家更不好理解了,对吧?因为我们是看到reducer继成的table reducer,人家就告诉你的,后面东西不要你自己指定,人家那心里死了,就是这个类型,对吧?是里面有aend equipment,还有delete,还有什么不的,我们这块呢,是单纯的去添加一个数据,不是end,更不是删除,所以我们选用了什么?
15:06
铺的对象吧,这里面就是构建铺的对象来跟那个我们整个的一个交互的啊,跟H那边进行一个交互,是这个点。把它写一下啊,这个是map跟reducer。
我来说两句