00:00
第三种呢,就是我们要使用分表。啊,要使用分图表,呃,那之前我们说的生长环境当中,其实比较少使用直接使用分图表对吧?因为分图表呢,一般在这种大表与大表照语的时候去使用的,那我们想我们回顾一下所谓的分钟表,分钟表创建的时候,是不是我们要class某一个字段对吧,然后根据这个字段的哈希值,当然我们在进表的时候还指立几个图对吧,然后呢,它会在这个。建表的时候,我们要指定这个ID,也就是说我们所谓的一个字段,然后一个桶,然后导入数据的时候,它会根据我们所指定的这个字段进行哈希摩,以我们指定的统数将我们数据放到不同的文件当中,对不对,对吧?好,那我们做状语的时候,现在是两张大表做状语还是回归到最根本的思想啊,就是说数据量太大了,那我们就是使用map和reduce分制四项,对吧,先分后合,那我们可以怎么做呢?看啊,假如说现在两张大表,你直接做状语不太好,那如果说我们能把两张大表拆成。
01:18
一个一个的小表,然后把这两个部分一装这两个部分一装这两部分一,这两部分一。把最终照应的结果拼起来,是不是说整体照的结果?那他有可能那问题就在于我直接这样画的,这样分肯定不行吧,对吧,你随便说前面第一条到1万条啊,你也是一一条到1万条,我呢1万到2万,我这种方式分合理吗?不合理,因为你有可能你要的数据在人家这儿对不对,所以说为什么要引入分动表,那如果说我们两张表按照照应的字段。
02:00
去分桶,然后呢,分的桶还一样多呢。我们都是按同样的哈希,那你想啊,假如说我们分四个桶,对于大表A分四个桶啊,假如说这就四个桶啊,0123对吧,我对大表B也分四个桶,0123,那已经分好桶都是四个对吧,都是根据,而且呢,你要注意我们是根据什么。根据我们所说的join音字段,哈希来分的,那么两个零号文件一照引这个D面这边的零号文件有可能跟这个123号文件有招引的结果吗?不可能有。因为转引的时候,我们是不是a.ID等于b.ID啊,既然你ID相同,那么根据哈希值,然后你的桶还一样多,它是不是一定进到文件是同一个命名的文件都大家都要不然都是进到什么0000,要不然大家都进到00001文件对不对。
03:14
对吧,他的思想就这样子的,所谓的分桶啊,叫so,墨者bucket join对吧,叫SMB中。啊,名字挺奇怪的是吧,啊这种方式好,那我们来测一下这种数据先呢,我们让这个表呢,普通的方式去照应,我们看一下这个时间对吧,然后呢,做这个事的一张表。创建一个代表,这样吧,我退出来,因为我中间设置了什么压缩那些东西比较多,对吧?啊,排除那些干扰,重新进啊表我们已经进了,进完之后呢,我们还是把这个数据导一下,我们第二张big table2这张表呢,跟big table1那张表其实完全一样。我倒的还是这个数据,对,你不用搞其他的数据了,我把这个拿来加载进来,加载进来以后呢,我们直接用big table跟这个big table2进行照引,这个地方我其实是这的前面的那个词语句,所以说还是S啊,就不用改这个别,反正是别比也无所谓吧,不一定非得叫B1B2呗,做照影,我们看一下他一个结果啊,就是说最终运行时间。
04:35
反正我在下面测的时候用桶照应的方式呢,能省一半时间,这是虚拟机,那我我也找了一些帖子啊,能看到它在生产环境当中应用的时候呢,还是就是说人家能从两个小时到十分钟就没用桶照应,之前两个小时用了加了桶。然后呢,分同表对吧,然后你用两个分钟表转十分钟就搞定了,十分钟搞定了,因为它是分开的,他就把整个两个大文件,把它分成了一个一个的小文件去照一个,对吧,我全部用小文件去照一个,效率高很多啊,效率高很多,所以要注意一下啊,这是一个呃,在生产环件当中遇到大表跟大表照应常用的一种方案啊。
05:27
这个数据量我的机器我记得好像是七八十秒吧。这个跟当然跟机器也有关系,对吧,不能说大家都一样啊,这不可能。嗯。嗯,88是吧,啊,这是88秒,这是普通的造型,两个表我没有做任何处理,对吧,我把所有的那个配置信息是不是还原了,相当于因为我刚才退出重性了,我们这边是不是赛的有一些什么压缩啊,乱七八糟属性啊,我都给它还原了啊,都给它还原了,OK,那这是我们所看到的普通的一个状语,那么接下来呢,我们要去见分离表。
06:18
啊嗯,要对两个数据呢,见分夺秒,然后呢,我分的是六个。因为之后呢,他会把对应桶的数据拿在一块照影,也就是开一个专门的任务去做照影,所以这个时候呢,这个六是怎么来的,我这边写了一下,其实啊,桶的个数不要超过可用CPU的合数。因为什么?我们希望它所有的任务能够并行,对不对?如果说你分组太多,超过了CPU的个数,那其实他们在同一个CPU内执行多个task,其实是什么串行的,我们虽然看上去好像两个任务都在跑,只不过说他们两个任务在互相争抢资源,对吧?实际上整个的任务执行是不是串行的,对吧?所以呢,我这边分的是六个,因为我三台虚拟机,每台呢我给的是两个核。
07:06
啊,所以我这个要分六个啊,效率最高的,呃,给大家看一下,我三台机器一样的,我是给的四个G,呃,每台呢两个。两个口啊。一个注意性,两个和啊,所以呢,我这边分筒呢,用的是六个,然后呢,我们分筒的字段按照什么状语字段进行分进行分的,对吧,按照抓紧字段好那两张表啊,第一个big table发一呃把这个拿过来,或者说直接到这吧,直接把这个数据再加载进去,还是这张表的数据啊,对吧,数据肯定要保持不变啊,你不能说我在做这个筒的照应的时候,就把他的数据变小一些,那就肯定不行是不是。但如果说有同学给大家讲,那我把这个导数机的时间算上,那时间更长了,因为咱们数据量不大啊,嗯,之前呢,我这边还保留了一个。
08:11
看一下这边就有一个啊,专门准备了一个东西啊,不是看错应该是。他对,哎这个东西怎么没反应呢,这个总招眼啊,这人家测试那个案例啊,然后呢,有一个这个这两个人么,上一条对吧?呃,然后有这个还有数据新斜并个二级千万千万,然后人家呢,用了这个统牌,不是统牌就按照分钟表的去作秒转,最后得到的效果。一个多小时,就是普通的照影耗时什么一个多小时,然后呢,如果说用到了我们的什么桶,分桶的一个操作之后呢,包括插入数据啊,用了十分钟,包括插入数据的一个过程,咱们因为是数据量太小了,因为你这个插入数据可能会影响到我们最终的任务,对吧?好,那接下来呢,第二张表还是一样的,也是按ID分桶,分六个桶啊,其实他们俩关系啊,是倍数关系的好。
09:25
但是最好就是一样的就够了。这是相当于我们在准备这个数据,还记得刚才我们普通的状语88秒对不对,对吧。因为当你数据量太小的时候呢,你启动这个任务耗时就会占比就会比较比较重。因为MR整个的启动任务啊,就会比较比较慢啊,哎,你看这边呢,他有时候那个资源不行啊,我们重新找一下。我得把这个倒一下,肩表旅居就不用了啊,这个有时候它是由于资源的问题,又是维扣二啊,连续跑任务机器人扛不住,但那个失败的时候你去冲跑一下啊就好。
10:15
这还找数据呢,所以说有时候虚拟机不太靠谱。稍稍微数据量一大了就不行。其实这个时候呢,我们能看到就是之前大家说问大家的那个进程的名字,对吧,现在呢,应该在跑这个video。六个video啊,然后呢,我是刚好一台机器两个和这个就是video任务延跳的六个,对吧?啊,因为呢,我们刚刚刚才是不是六个维修赛。对吧,有六个羊的,现在肯定就没有了。
11:01
昨天过程没有了,这是在启动第二个任务,对吧,APP master啊第二个任务起来了。第二个任务里边任务数我看一下是三个。还没有完全启动呢,啊,这个时候有的可能就跑完了,他呢是map任务跟reduce任务都叫牙跳,都是一个进程啊,都是一个进程,这个说要我要注意一下,行这个就跑完了,刚才由于有时候呢资源足导致到这个问题,行,那接下来呢,我们去做整体的一个join啊join之前呢,我们设置几个参数,让它允许我们使用什么。同的方式的一个join引对吧,也就打开我们的一个属性啊,这个属性给它打开RC拿过来,然后呢,好的好三个属性我们都打开,打开好以后呢,我们去做join,然后呢,此时我们拿的是big table,发一跟这个big table82去join还是往join table当中前面这个词汇语句其实就换了表,其他的没有动,然后呢,我们测一下他啊。
12:11
他有六个map,看见没啊,每个map自己去做自己的事,而之前我们做的那个照影呢,实际上只有一个map啊,只有一个map这边还是一样的,这个map是不是大家也看到,也叫你的呀,等会啊,这比较慢,牙跳牙跳是不是六个对吧?啊,此时呢,是六个map任啊六个map。而且全局只有一个二任务对吧,这个呢只有49秒,之前是88秒对吧?啊就几乎都快一半了,而且呢,其实咱们现在啊是数据量比较小,而这个任务的启动跟关闭时间呢,占了很高的比例,如果你数据量太大了,很大很大的时候,那启动和关闭反而不不占特别高的一个比例,那就看数据了啊,那那个效果会更明显一些啊,更明显一些,那有同学可能注意到了,这里面还有这个时间对吧。
13:31
这个是什么时间啊?是CPU计算时间,是他是简单粗暴的教我们很多任务,CPU使用时间放在一起累加的。而我们知道我们里面有很多任务,刚才我们说了这六个牙child的,由于我们有六个和它是完全B行的,对吧?假如说我们每个人都用了十秒钟,其实这个任务十秒钟是不是都完了。它显示出来应该就是多少60啊,显示就是60,这个要注意一下,不是说我们不能看它,我们看的就是它,或者说很简单一个道理,你如果说搞不清楚到底是他还是它的时候,咱们可以怎么做,启动的时候看一下表就行,对不对,结束的时候看一下表,你就知道哪个时间是当前这个任务的时间了啊,这个跟大家说一下,这个时间呢,是他简单粗暴的将你所有的ma任务跟video任务加起来的这个时间。
14:25
啊,是CPU计算的时间对吧,总的,而且是总啊是吧,这是我们所说的A用分组的方式去做作语,前面我们这说了分懂的,呃,应用场景,在市场环境当中,我们其实很少直接去做什么事的。建一个分钟表去用,而分钟表呢,就在这个时候去用的,当两个表特别大的时候,对吧,然后呢,我们用分钟表去装,然后相当于把表给它干什么,拆开,然后呢,你把小文件对应的小文件去做造影啊,用这种方式,而且呢,我们通过这个时间也能看到它明显的一个效果啊。
我来说两句