00:00
好,那我们接下来应该写这个。了吧,这个应该继承我们所看到的那个什么叫table对吧。Table好,三个类型我们也知道了,那前两个类型是不是从这拿。是不是这个输出就是它的输入啊,对吧,这两个类型没得挑啊没得挑,如果写错了,他最后类型就不不匹配了,对吧?啊会有类型转换异常对吧?好,那接下来写出去key out是不是也可以随便写,那我还给它简单一点干什么?No。那我来啊,这个东西就搞定了,好,这个里边接下来写videos就简单了嘛,怎么做直接便历写出就完了吧,因为现在已经封装好了,是不是一个一个的put对下来啊,便利写出OK,那VALUE64点或循环啊,VALUE6。对。
01:01
直接context。contact.right对吧,空制空的那点get,然后第二个是什么。歪了啊,或者说这个东改成铺的更好看一点,是改成的。其实把这个东西改成POS也就好一点,是不是啊,无所谓了,就不改了,大家知道就行了,因为前面传过来的不是破的吗?啊一个迭代器,我上午说的就是这个迭代器啊,这个迭代器是被那个。MR封装过的。啊,被MR封装过的就是他这个迭代,正常那个Java迭代器,每一次迭代的时候,这个对象都有一个新的对象,对吧,但是在二里边你会发现这个对象啊。用的是同一个地址。啊,他对这个迭代进行了封装,因为数据量大了,你是不是处理同一个K的所有value理啊,如果说每一次进来都新没有一个对象的话,那人家也受不了了,是这意思,你们当时从这里边拿对象,要不然去拗,或者用一个方式,就是里边有B9啊,就MR提供了一个B99。
02:09
诶,这个还不全啊,不全,因为他没有导那个哈多那个包应该叫一个B啊叫个B。是MR包底下的有一个这样的一个类,就是来拷贝什么东西呢?拷贝当前这边这个迭代器里边的一个对象用的啊,并对象用的,因为它用的同一个地址,如果说你直接复制出去,你会发现最后写出去之后同一个所有的大家都一样吗。能听懂吗?啊,是这个意思。好,这个直接就遍历写出就完了,那最后这个driver我们是不是可以快速的写下来,对吧,已经写出好多次了,实现这个。Tool接口,然后做这个奥加飞车实现相应的方法啊实现的方法OK,那这块呢,同样的我们还是要去定义。给你信息对吧。定义。
03:00
配置信息,然后是con。好的,我报销。等于一个那啊等于一个,那好,然后set conation等于comfort,啊等于复好get就是把这个con做一个返回啊,这个返回好,那接下来是这个点。这那这个地方我们要写一下,呃,按照步骤第一步。设置诶获取交互对象对吧,获取效果对象,然后设置主力路径对吧,设置。主类路径好,那第三步设置什么呢?Map and。输出KV类型,然后第四步。
04:00
设置什么好,这块我们其实已经知道和什么输出的表。带输出的表对吧,是不是在这里的定义呢,叫table map reducer u那个工具链啊,初始化的对吧?啊一块在这设置的好,那其实还有一个点啊,实际上T。也可以设置什么reducer,当然map都可以了,当然我们看到了它除了有init这个,Reducer这个之外,还有什么?Need map啊,其实输入的表在这就可以定义啊,在这就可以定义,那另外就不用写输入输出参数了,那我们就可以干什么。输入输出参数都不用写了,可以直接干什么。提交任务了吧,啊提交任务它就简单一点,那我们从这还是从这往细写,这个是job.get然后加得到这个叫对象。设置主类路径,校点S。这白plus对吧,这个是UT。
05:04
对吧,点啊点class OK,然后这个地方。Map,我们之前看到,我们看一下啊叫table。MAP6包啊,点这个地方没有初始化map,我们点开。CRP看一下他要的参数。看着特别多对吧,是因为他把输入参数。Ma的一个类型以及ma端输出的KV类型都放在这一块。啊,以前是不是分开设置的。那内是不是单独这那输出的KV又分两个参数吧,然后还有输入的参数是不是又一个,总共四条语句,它放在一个里边来看一下,不要看这个很多啊,第一个是什么。Table,那这个就是读的那个表达,是不是相当于预祝午餐啊,对吧,在这里边统一设置了第二个这个。
06:03
他要一个SC对象,也就是说你在读这个数据的时候,你可以限定我哪些数据可以不读,可以从1001读到1005,但是如果说SKY我里边不传什么Rose,不传过程器,那就是什么全表扫描了,好,那我们等会就全表扫描,那你接下来看一下这个。其实他们俩整体组合成了一个输入对吧,对吧?啊,一个是表,如何扫描这张表啊,两个是输入,那这个呢。是me吗?对吧,好这个呢。输出可以输出的value,最后把叫,因为之前我们都写的叫点赛西对吧,现在呢叫当前这个叫还要绑定在一块,是不是就相当于他把之前我们设置的几个参数干什么放在一起了而已吧?啊看着很长,因为他把东西放在一块了,那这个东西你是不是也可以自己写一个类似的方法,然后把教过来放在一块啊啊,你就直接写一个方法叫S。
07:04
对吧,定义一个set map这个方法,然后set map里边呢,写着四横的吗?那实际上它往里面传参数的时候,还不是一个一个的去设置的吗?对吧,好,那我们写一下第一个它要表明吧。表明呢,我们看二。零这个是输输入对吧,输入我们就从零开始OK吧啊输入好,那到时候呢,麦方法的第一个参数作为入参啊输入的表,那接下来第二个B,他要一个SKY对象对吧,那我们直接六一个SKY可以吧啊六一个SKY好空参,空参代表全秒扫描,接下来B。吧。这个地方是。二点拉啊,接下来就是K吧,K还记得是什么?叫iable是吧。IM,这个。Best。I'MU。
08:02
我们用immutable叫be readable啊,Byable点好,这个value还记得是什么,是不是put,对下了,对啊,put.plus啊,最后还剩一个叫过吧啊,这个设置进去,他就把所有东西都设置清楚,好reduce我们也来写一下,叫table。点初始化这个什么。Table叫落吧,啊随便写一个B,它呢三个参数。一个table输出的表啊,第二个video,还有一个叫我对象好,那这个是阿。一输出参数对吧?啊按一啊,第二个呢是reduce类,那就是fruit to reduce.class第三个是一个角对线啊,给他进来就OK了,就OK了,好之后呢,提交任务还是我们同样写的叫点贝对吧?看R加V得到it without,最后呢返回值我们还是写一下。
09:14
零冒号一对吧,啊,零冒一考二加L格式化代码零代码,那之后呢,就是我们写的什么卖方法吧,啊卖方法第一个创建一个。等于六一个。啊,然后是to往run.wrong给他扔进来第二个。又一个什么?我们fruit。哎,输入的F的第三个啊,加回车。啊,这个异常呢,我们抓一下啊,抓一下,然后把它。
10:02
到YX。啊,这个放在这,放在这,刚才我们是不是打包运行了,那这个东西之前大在二中都在本地跑,那跟h base连接,我们能不能在本地跑呢。对吧,我们试一把打包肯定能运行吧,啊,或者等会我们在本地跑完之后再打包运行一下啊,换一张表换一张们首先呢,我应该把负的二也创建,创建好了吧,负二已经准备好了,那接下来这样,既然在本地跑的话,我就不通过卖方法传参数了,这样我给他写一个。F用it的这张表,这个写什么的二。I2对吧,啊,这两张表。哎,这个这个没删。那现在我直接运行能成功吗?那肯定不能,为什么,你跟我们其实有关系吗?没关系吧,啊没关系,那有想了,那为什么打包上去就就有关系了。
11:17
因为整个的环境变量里边是不是有个量,把那个所有的一个配置信息也能加载到啊,也能加载到,那我们接下来还有一个地方啊,就这一块你写这种。就是说现在当前你写的虽然是一个MR,这个MR是不是跟h base进行交互,最好是干什么,如果说你在本地运行的话,最好把这个东西换一种写法,写h base那个con。还记得怎么创建吗?是这旁边有点。Create对吧?号加B啊怎么回事?为什么说这样说来看一下create这个方法到底做了什么事,点进来,首先你是一个空餐的,他直接拗了一个什么。
12:06
然后他里了一下,整个的一个class叫拉。类加载器对吧,然后去加载什么。你看下。它读了一个默认的和一个什么,哎,这思杠S变化的好,那你要向它本地运行,第一个可以有几种说法,我把这个。来,或者你在这个格式里面就设置一个ZP地址可以,但是更好的方法来在这。看了一下,康一下啊,这辈子下你把这一套给干么?给他扔进去啊,注意这个是一个插文件,这个地方也要有头文件,要有在这底下干事,这一个文件叫H贝斯杠,注意这个名字不能随便取。
13:06
只能叫这个名字能听懂啊,CTRLV给它粘起来。啊,给他站起来。查文件,诶这块有一个,我看一下这个,每次这有一个那个好像有一个格式问题,你去干什么,往上缩定一下,然后回车一下就好了啊,这个是每次导进来它有有一个问题,他第二里边有这个问题啊导一下重新导一下好了,那我们把它干什么在本地区。启动一下啊,试一试来。那这个地方它就不用提交给亚M去运行,对吧?啊,就在本地运行的,因为我们之前做API测试的时候,是不是可以从本地引导H倍行啊,对吧。这应该加一个logo附近让他打印那个最后的这种。日志啊,要不然他出不来。
14:01
这只有最后的那个一个扣的码啊,最后的一个值。那不管了,等他走完,走完之后,我们可以在这干什么?负的二。这个走这么长时间吗。还是打印日志,看的书遍,至少我们知道走到哪一步来了。加一个logo附近在哪加呀。可以在这加加一个log点,里面配置文件呢,大家可以随便上网去搜一下啊,到时都有比较多这个东西啊。这个有点慢是吧,你应该加了个分线就好了,因为至少知道过程,哎走完了,走完之后我们可以干什么,扫描是不是那边也能插询进来啊,对吧,啊也就搞定了,所以说这个东西呢,照样在本地,因为我们之前写API的时候,是不是就是从本地连接到。
15:00
既然你从本地能连,那我MAB6不也能连吗?对吧?啊,也能连,但是你要注意的是你一定要把什么。配置文件给他搞定了,好搞定了,还有第二个问题,那在集群上我们好像做了把H杯子架包扔到哈多宝黄金面上,那这块我们也没做呀。我们没做这个事吧,本地为什么能成功呢?是这样的,因为H这个包里边啊,就包含了什么。哈的所有内容。当时我们解压的时候还提醒大家注意,是不是有很多哈多的内容在里边,对吧,这块就有啊,只不过说它里面内置的哈多是2.5.0,我记得是来看一下,我没有,我任何一个地方没有导过这个哈多的一个依赖吗?没有吧,这里边什么哈。诶,这个跟这个没关系吧,因为当前我是这个这两个模块是什么。
16:00
评级的是不是这两个模块评级的,其实他这里边这边有啊找一下,而且我这个里边导的,你要注意一下之前导的是多少呀,2.7.2是吧,来看这。啊,其实h base里边有默认的哈,一个包,而且呢是二点。5.2.5.0,这个是哈多宝对吧,2.7.2。这个你看这好,应该是2.5.1 2.5.1,你看这两个包这两个。除了版本是不是大家都一样的,对吧,还有很多呢,这个也就是说有一部分是谁搞进来的。H base啊,是h base给他导进来了,所以H已经有了什么。哈多的所有的架包,所以在在你在idea里边运行的时候,是不需要做我们上午那个事说再把那个什么S包啊倒一倍,因为我们当时导的时候是不是已经倒了的和啊这两部分就已经包含了MR所需要的所有的包,所需要的所有的包,所以咱们在本地可以直接去运行,但是大家要注意的点就是最好是用什么方式。
17:11
配置文件的一个方式引入资源对吧,要不然你如果说你不写这个配置文件,你这个地方能找到集群嘛,那肯定找不到的啊,肯定是找不到的,所以呢,你写一个配置文件,当然你把这个东西打包的集群,肯定也是照样能运行成功的啊,因为本地的一些,呃,我们机器上的环境是不是也是都OK的,而且错误很多,官方的两个案例和我们自己写的一个案例,打包到运行都OK吧,啊这个东西呢,你打包到继续运行也OK,因为这两个更方便一点,在本地做完测试,假如说有问题,我们改完了。再扔上去吧啊,如果说每一次都要扔上去还挺麻烦的是不是啊。
我来说两句