00:00
好,那刚才我们看完了大表跟小表的一个drawing,那生产环境当中呢,我们更多的用的map drawing,但往往来说我们更多的有时候是大表跟大表之间的什么。做招引操作,那这个时候就没办法将任何一张表放到缓存当中,那怎么办呢?首先第一步我们先创建一张大表并导入数据啊,创建第二张大表并导入数据,然后接下来我们从时间的角度来看一看啊。把这个数据进行一个导入,那么接下来呢,我们直接测试两个大表做join,往join table当中去存放数据,然后从big table1 big table2当中得到我们数据啊呃,那最早的数据呢,我们应该是一个big table这张表啊。我们等待一下他的一个查询结果。就好了。
01:05
我们就看一下我们的内容对吧。啊,当然呢,可以多次测求一个平均值对吧。这个时候呢,它的效率相对说比较慢,因为我们两张大表做join。啊,最后呢,我们可以统计一下当前的这个时间是什么样子的。这个呢,我们可以稍微的多等待一会儿,因为大表噪音,大表相对来说还是比较慢一些。
02:01
我们在等待一会儿,应该很快就可以结束了,对吧,稍等一下。好,这边呢已经结束了,我们能看到最后我们用时呢是72秒,我们把这个时间呢拿过来。好,测试结果呢是它,当然呢,我们可以通过多次测试拿到我们的一个结果,对不对,好,那接下来我们做一个处理,在大表做人大表的时候,如果直接join,那我们看到时间呢是比较久的,那接下来我们做一个助理,叫s MB join,也就是说salt mor bucket的join,也就是什么意思呢?我们要将这个大表变成一个一个的分筒表,刚才我们在介绍分筒的时候,大家应该有注意到,分筒其实就是将我们的数据呢,给它分成很多个小文件,因为默认情况下来说,大表噪音大表来看一下两个大表装音,只能将两个大表读进来放到。几个reducer当中去。
03:03
运行啊,全局的读进来,然后做分区啊,做这样的处理啊,但实际上如果说我们做了一个桶装,那也就什么意思呢,我们知道分筒表是根据我们的什么内容。根据某一个字段,比方说就是照影子的ID,我们做了一个分桶啊,我们可以分六个桶,八个桶,就这样子的,好,那这张数据呢,分到不同的文件当中,那对于两张表都做相同的处理,也就是说两张表将会怎么样?第一张表分成六个桶的话,那么就是六个小文件了,对不对?第二张表是不是也是六个。小文件,那接下来我们都是根据ID来做哈希模拟六得到的这个数据,那么我们想一下,如果最初能关联上的数据,现在是不是对应的分区号一定相同?
04:00
思考一下,留一点时间。我们都根据ID做哈希。把我们一张表的数据呢,切分成多个不同的小文件,那接下来本应该转以上的数据呢,现在是不是在同一个分区文件当中呢?对不对。OK,好,那分筒照应的原理就来了,它实际上呢,将我们大表转化成很多很小表,然后接下来拿着对应分区号的数据在一起进行join,最后把数据有点拼接在一起,就是我们最终看到的一个结果。哎,这又是一个分而治之的思想大表,状元大表,它效率比较低,但是我们可以把两张大表拆开。变成很多的小表,然后去做处理,行,那把这个内容呢,我们也做一个测试,首先我们创建第一张分工表,同时往内部呢插入数据,呃,40个桶呢,可能有点多,那我们分六个桶,根据我们的这个内容啊,第二张表呢,一定要保持一致,他们俩之间可以有倍数关系,没有问题,因为根据哈希来的对不对?好,那第一张表呢,我们去创建并导入数据,我把这个加载一下啊。
05:17
我们就将两张大表呢转成两个。分统表导入数据,那接下来还有第二张表叫8K2,也是分六个桶啊,然后呢,我们把这个数据呢导进来。等待这个执行完成,因为我们要导数据嘛。由于我们分了六个桶,所以最终呢,它是六个reducer,那没有问题对不对。我们稍等这个完成,然后呢,去将我们第二个分钟表也去完成一下。
06:19
好,这块呢,快要走完了,那第一张表呢搞定,那接下来呢,我们把第二张分通表也搞定。我们还是稍事等待一会儿啊啊,等这个设置完成之后,导入数据完成之后,我们将对应的参数设置一下,开启统的join,然后呢,So watch,然后呢,呃,设置我们读取数据的方式呢为统的读取方式之后呢,我们可以测一下我们join它的一个时间,刚才大家应该记得。
07:06
两个直接做照影呢,是72秒的时间,然后我们看一下两个分钟表照引会是什么样。先把这个粘过来,CTRLC拿过来,然后呢,在这里边进行一个粘贴,稍等,这边应该快已经处理完了。因为我们的数据量相对来说比较大,那接下来呢,我们把这个内容呢粘贴过来,好开启了我们的统装引,接下来我们再做测试,刚才是直接照影是72秒,那同样的我们用两个分筒表去做照影,来看一下这个。时间。Join的语句呢,完全一样啊,注意我们不可能说join的语句不一样,我们来测,那这个就没有意义了,对不对。这个呢,地方呢,我们可以稍微的等一会儿。
08:11
好,那我们看到这个时间,我们花费是34秒,也就是说不到。几乎是刚才的一半。啊,测试最终呢,我们达到的时间是34秒这个时间。那跟刚才原始的这个相比呢,我们时间。是刚才的近一半。啊,近一半,那这个得益于我们所说的叫分而治之的一个思想,啊,我们提高了一倍的速率,那如果我们数据量特别大的情况下来说,这个效率还是非常的明显,所以你要知道大表照应大表,我们当中呢,有一个SMB方式的一个转移,也就是说将表呢拆分成不同的小文件,然后接下来拿着各自的小文件放在一起做状语操作。
我来说两句