00:00
那接下来我们来看一下s MB join的一个效果,那在这之前呢,咱们需要重新导入一下这三张原始表,咱们在引UT这里,因为咱们之前做过一些表信息列信息的收集,对吧?啊,咱们为了测试的准确性,咱们重新导入一份啊。这个我已经执行过了,因为时间还比较久,对吧,十来分钟十几分钟,那我已经执行完了,那我们可以看一下hi的原数据库这里,那之前那个162163164那个统计信息的表已经不见了,你看直接跳到167了,对吧?然最新生成的在后面啊,也就是说那个。重新导入一份三张表啊,三张表,那接下来咱们通过两个案例,第一个就是。非分同表join跟满足s MB join,咱们分别来看一看它的一个效率,效率那我们看一下这个逻辑啊,首先普通的案例是这样,呃,你看这查一张查出三张表对吧,分别查出来,而且他们查的是普通的表,并没有带那个classster那个后缀啊,没有。
01:20
那接下来呢,咱们这是大表join上一张大表,那在JOIN1张小表啊,这边就直接三张表都拿过来join啊,因为之前写过就呃,直接拿来用就行了。然后呢,保存到一张下划线一啊,这个是不满足SMB join的,那我们再来看看SMB join这个东西。前面都一样啊,36个并行度,然后呢查表啊,三张表。但是呢,这边查的是什么class特表啊,这两张是咱们之前准备好的一个分通表,那在之后呢进行join,那么JOIN1定要注意,咱们要先大表跟大表进行join,也就是这两张分同表,咱们分先进行join印,要不然如果顺序乱了的话,咱们变成小大大的话,小跟大表是不是会进行一个。
02:22
Join了对吧,Join完之后是不是生成一张新的表,那这张新的表它就不是不是分筒表了,它就变成非分筒了,那这个时候他们就看不到效果了啊,所以咱们这个顺序单独拎出来先写啊,之后再来写啊。好,那么接下来咱们就直接提交执行啊,找到这。提交,然后呢,我们就静静的等待他执行完。
03:01
听完了,那么这里呢,其实我把那个SNB教也跑了,因为省点时间,那我们看一下,先看一下SNB教验的逻辑啊,同样36个并行度,然后呢,同样查三张表。这三张表呢,只不过这个大表咱们用的都是什么分桶后的表,Class表啊,然后呢,这边保证大表跟大表先join。然后再就用一个小,要不然的话咱们大跟许就用完。如果大表跟小表提前就用,岂不是变成了一个结果表对吧,中间表,那这个中间表就不是分筒了啊,非分筒表啊,这刚才也提过了,那这个呢,我也是执行完了,我们直接从那个执行机,呃,那个历史服务器做一个对比啊,那看我们最新的这两个,一个是big doing,一个是SMB join啊,那从执行时间上来讲差不多,但我们看看细节。
04:10
这个job呢,我们可以看到有。这边产生两次join对吧,那我们直接看执行计划吧,比较直观,那首先呢,你看扫描的是。这一张扫描是这一张,这是两个大表,大表进行join,他们走的还是salt merge join它也要排序,那首先我们把这个截取一下。好。大家可以看到,他们的排序时间可能要用到5.8秒,还有4.2秒。那跟小表这个不是咱们关注的啊,那后面这里他们排序就很快了啊。接下来呢,咱们。继续看啊。看那个。
05:01
使用了SMB join的这个作业啊,点开,那这个是涉及小表的广播,咱就不关注了啊,那这边是1.5分钟,其实是更快的。而且呢,大家可以看到中间呢。我看一下有一个失败的任务,然后从事的才导致了他的时间拉长了,对吧,嗯,这个无所谓,咱们看这执行计划。咱们还是找到两张大表,嗯。啊,这个还有这个两个cluster,好往下往下,那我们发现它也是一个salt merge,就但是相比前面那个没有分筒的,咱们是不是应该多了一个分桶操作,而且是一个有序统,对吧,那怎么体现呢?其实主要在这里。时间。其实咱们对比一下时间还是有点区别的吧,基本上咱们可以认为是缩短了一半。
06:01
啊,缩短了一半。这个就是提前分桶排序的效果,另外呢,就是大数据量一整张表跟另外一整张大数据量的表进行join,这个其实咱们没有体现出来。因为它整体就跟你分几块去join的,这个效率没体现出来,是因为咱们这个数据量说实话不够大,还是算小了吧,才几个G算什么大表对吧,单机都能跑,单G都能跑,那如果你的数据量上了一定级别,比如说呃,大几百G啊,或者TB级别了,或者PB级别去join,那你这个。时间差距会拉的特别特别大啊,那至少我们可以从这里观察到,呃,咱们有系统的话,至少排序时间是减降低了啊,缩短了一半啊。另外呢,咱们也可以从HDFS来观察一下,咱们一个写的是这个是普通join,这个是s MB join,我们看一下它形成的文件,首先看普通的这个它是不是生成了37个,对吧。
07:11
扣掉这个success,那应该是36个,这就跟咱分区一样了。呃,不是跟咱们那个并行度设的是一样,那再看一下二这个地方,你看是不是只有五个。因为咱们之前两张分筒表用的都是五个桶啊,最终他们也是以五个桶的形式啊落出结果啊,从这边也能看到一点效果啊。好,这是咱们的s MB join这个也是在。特别大的表,两张大表进行救援的时候比较好使的一招啊,比较好使的一招。
我来说两句