00:00
我们来看一下这个还是这个笛卡尔级的问题啊,笛卡尔级它是。在公司当中开发的时候,这个第二级肯定是要避免的,首先来看一下它默认的这种方式啊,它这个二级是可以执行的,可以执行的来做一下啊select。1.1内我们设计一个第二题出来可以吧?d.D内两张表,你写两个字段,然后不写交易条件是不是啊,查询这个from EP这张表,然后交易。直接加一个逗号,然后第一批走啊对别名别名没取是吧。和D。你看他默认的是让你执行这个操作的是吧,让你执行这个操作的,到后面我们讲那个严格模式的时候,在公司当中严格模式是肯定是开启的,就是你这个语法过不去,过不去。
01:03
第二题,其实就把这个东西跟这个东西相乘是吧,他俩的一个乘积的一个结果,你看这数据量还是很恐怖的吧,嗯,正常公司当中,你have当中的一个表不可能只有十几条数据。不可能只有十几条数据,所以一般都是避免掉笛卡尔级,你自己写的时候要注意,第二就是公司当中已经把银合模式打开了,你往里一写的时候,你这个语法都过不去,还不让执行的这个笛卡二级的问题,然后我们看一下这个,接下来看一下这个行列过滤,行列过滤那这个什么意思?看,他说在select当中只需要拿到需要的列。尽量使用分区过滤。也就是说你只拿你自己需要的列。这个地方我们要先简单聊一聊。开口这个语句啊,最终翻译成MR之后,它的一个执行顺序,这里边儿涉及到了一个这个概念,敲一下在这啊。
02:07
为此下推。好位置上推这个概念。这是正常的,我们select一个语句啊,Select,听FROM1张表,P这张表,然后will。然后说一内等于。张三吧,啊,假如说等于张三这个语法它是怎么走的,它首先啊。先是找到你。表示谁,然后走的是V字段,V字段这个在然后走的这个V字段啊,它先过滤啊,先过滤然后才执行你相应的新也好,说你抗的也好啊类似的一个操作,他最后最后是走这个逻辑需求的这个东西,先去走V子句,哎就叫V此相推啊,提前的把数据过滤出来,让他他提前把数据过滤出来有什么好处啊。
03:06
数据量,计算的数据量是不是很少啊,哎,就减少了计算的一个数据量啊,这个叫为此下推,这个现在我们要讲的这个行列过滤是什么意思呢。就是你在两个表交应的时候,交应的时候你交易之后,你看啊,目前是这种。大表交应小表的时候,或者两这现在是两个大表交易时候,这个table跟R交应,然后你交应完了之后你V。放在这个地方。放在这个地方,它你如果说这个逻辑啊,你为此下推就失效了啊,它是在你关联之后再。做的过滤,那像这种应该怎么做呢?你写在紫砂菌里边。你把数据啊,提前给它过滤好,然后再去交易。这能理解吧,这两个执行效率肯定是不一样的啊,执行效率肯定是不一样的,你想想看,你先把两个大点交进去之后,然后再去过滤,跟你先把过滤好,然后再去降这个来啊,是不一样的啊。
04:10
这两个一个效率,哎,其实它这个行列过滤,看名字好像感觉不出来它什么内容是吧,但是你要理解它中间的一个具体的内容,就是说它是先过滤还是后过滤的问题,我们一定是想尽一切办法让数据先过滤。啊,先过滤啊,就是减少它处理数据的一个量,处理数据的一个量的问题啊,是这块行列过滤所讲的一个事情。来我们测一下吧,嗯,这个表我们没有导数据是吧。那我们。改成莫吧。刚看一下。I made a small table。然后table叫S。
05:03
取名叫S啊,然后最后指明下S的ID小于等于十来下那个啊哦,这个地方没改是吧,S其他的没。那哦,这个地方是。s.ID是吧,OK。其实我们。就就就,刚才就用O表示就行了,是吧,就不用改那么多了C走一下。这个是我们把过滤条件放在外面是吧,也就是说它在交应完了之后再去过滤啊,这种方式看它的一个时间,看它的一个时间,然后再对比着,我们把过滤条件放在里边吧,让它先进行过滤,然后再去执行交养啊,你要看这个。20秒是吧,哎,他们之间没有小于等于十的一个ID是吧,这个数据里面确实没有小于等于十的ID是吧,都是9000多是吧,那无所谓,不管他有没有,然后接下来我们要做的是什么。
06:08
先过滤再执行,还是把这个拿过来。然后我们把这个改一下就行,改成。CTRLC从ID里面查,ID小于等于OK,那我们O就不改了,好吧,你知道就行了,CTRLC。走一下。先执行它的一个过滤操作,而且所有的我们讲的所有的一个优化措施啊。在大数据量,就是数据量特别大的时候,体现的更加明显,懂我的意思吧,有时候小数据量太小,你像你之前做的那个压缩算法,是不是有一个数据量小的时候,他发现压缩之后它还更大的,有一个吧,就是因为数据量太小了啊,数据量太小了。19是吧,你看虽然少了一点,你看因为什么咱们数据量太小了。
07:04
数据量很小,它过滤不过滤啊。都差不多,都差不多,但是你能感觉到他还是稍快一点吧,稍快一点。那咱们还是同样的,你要是觉得这个还是不行的话,你把数体调成1000万条试一下是吧,看你心体机线到底能极限是什么啊,去测一下嘛,啊然后这块就是行列过滤啊,你不要被它的名字所迷惑了,它什么意思,它其实就是结合着这种位置下推啊,你自己再去看一看具体位置下推,它这个具体相应的一个解释,它其实就是will。字段在执行的过程当中,它会有前移,前移但是当你两个表交应的时候,你把这个V字段放在外面,它这种。就失效了,失效了它是关联之后再过滤的啊,你要懂知道这个事情就OK了。
我来说两句