00:00
好,那接下来呢,我们先要去准备几个数据啊,准备几个数据,呃,还是拿第1PD。啊,这个数据等我准备一下啊,在下面呢也放了,现在呢,我们就放这几个数据啊呃,我们把这个数据先准备好。到出来CD BD Mo到塔里边来为de PT,嗯,我们叫这个,我们就这这个无所谓啊,我就1.dpd啊来插入,然后呢,把这个数据放进来,然后为这个第PT。二点我就不写那么长了,在文档当中写的是不是2020杠零四,什么幺零啊零幺对吧,我就不写这么长了,我就说123啊,这个文件倒无所谓嘛,对吧,这里面呢放了三十四十是吧,然后我一个dept3.tst啊,到时候呢,我们准备三个分区啊,这是给三个分区准备的数据,五十六十毫分要三啊然后呢,我们去创建一张分区表啊,创建一张分区表,首先之前我们说的,呃,创建一张表科table,然后我们叫dept下划线给我们写上加一个后缀啊,要不然第1P那张表述已经存在了呀,对吧?然后呢,这里边字段我得去拿一下了,我们就不敲了啊在这。
01:36
呃,DBD number d和location没有问题吧,啊,是这样东西,之前我们要写的,写的时候是不是就是form。对吧,那那就普通的表分区表要加一个part的啊,注意加ED的啊叫part。
02:04
为什么强调这个事呢?因为最后我们还有语句查询当中呢,还有part。啊,所以要强调这个地方加了ED了,建表语句当中都有ED啊,所以呢,我把它拿过来,我们再给它一个分区字段叫天对吧?哎,给他一个分区字段,注意这个分区字段呢,跟他们三个人都不相同对吧?啊都不相同,然后最后我们再去指定什么。格式对吧,这个已经敲很多了,叫的好,然后接下来我们要把数据呢里放好,我们本地是不是有1233个数据啊,对吧,我们放到三个分区,按天放进去,天呢我们随便指定,那之前我们放数据怎么放的,首先这一块是不是说见表的时候有区别了,对吧?接下来放数据之前我们怎么放的,叫漏的贝,然后呢,叫第PT1.pst是不是into table诶少了一个I啊in table是不是这个DEP的PR这张表。
03:29
对吧,啊,以前是不是这样直接加一个什么分号结束了,现在呢,它是一个分区表,我们在这个基础上又变了,刚才建表语句不一样了,现在呢,我们要加一个分区信息,就是现在你看啊,我们这个文件里边是不是这三个东西有了。但是这个字段呢,它也是一个字段呀,对吧,没有对吧,所以呢,我们要指定一下叫partition括号叫对等于日期随便给一个,那我们就给,呃,前天好了对吧,二十五二十六二十七啊杠幺零他这个自转嘛,你随便给我给。
04:14
啊,要加上一个分区,要指定分区去放好,放进去了,放进去好以后呢,我们来查一下,看这张表是什么样。是不是这张表对吧,第1PD撇点。这是一层d directly是目录啊,对吧,而他的数据正常的数据呢。叫TPD好,那基于这种情况下呢,我们是不是可以把另外的两个都放进来啊,这是二,然后呢,我把它放到当你还还能把这个数据放到25号分区啊,那我们就不要这了,我就放到26号分区,对吧,这个呢改成27,然后这个用三好那我们查数据啊,我们现在呢,做一个全表查询C那行from de BT_BR。
05:16
是不是前面这个段能看到,哎,这个东西是不是也相当于是它的一个字段呀,分区字段也是表示字段,它这个字段的用法呢,跟其他时候都一样。啊,那我们还能做这个事情啊,看啊的新,我去写from de PT_PR然后没有。对,等于等于它还有一种写法,我也是写不了,结果一定一样的,我怎么写呢,叫1NUMBER等于十,是不是结果一样的。
06:06
结果完全一样吧,但是这一条搜的效率要高很多,因为这条搜狗啊,它是扫描了全秒了,因为它是对第一批的number进行过滤,那这有时想不通了,诶你这边呢,对对进行过滤,我这边呢,第一批的number进行过滤。凭什么我就不走全面扫描,你这边呢,就要走全面扫描,因为你想想看啊,这个东西第一面令number它是放在哪的呀。它是放在文件里边的,那我不扫描,你看现在呢,是不是有三个。目录,那我不扫描这个文件,你知道这里边有没有等于十等于20的吗?你知道吗?同样道理,这个第1PD3如果你不去扫描它,你知道有十有20的,你知道有没有吗?你不知道,那你要我们要的是候十或者20的,那你只能怎么办,全表扫描,那而这个D呢?那D它是在哪的呀?是不是在这一层啊,你要的是D等于1025的,那有可能指向它,有可能指向它吗?不可能,我们就直接干什么,是不是定位到这个目录的呀,因为这个分区字段啊,它是这个当前这张表的字段没有问题。
07:33
但是他这个字段比较特殊,它不是它这个字段不是放在具体的文件里面的,而是放在目录的位置。你看啊,它这个字段是不是放在目录的位置,它不像我们第1p number d name,或者说LC是不是放在文件里边的,那如果放在文件里边,你要对这个字段进行过滤的时候,你不扫描文件能行吗?不行,但如果说对于分区字段,它是放在目录的位置的,对吧,我不扫描文件是不是可以啊,对吧?我我这个字段就不放在文件里边,我直接读这个文件夹,我是不是就知道了,我只扫描这一个文件夹呀。
08:11
对吧,是这样子的,所以分区表呢,就是用来提高效率的,可以避免掉全秒扫描,而且分区表的信息放在这个位置,不光放在这个位置,其实在买斯当中也放了这个信息,就是这个这个我们来看一下啊。在MYSL的原数据里边,也就是说他在扫描HDFS之前,他就已经知道要访问HDFS哪一个目录了,啊来看一下这边呢有关于什么。分区信息的原数据对不对,好,那我们来看一下啊,我们点开都看一下这个地方你看。分区名称是不是刚才我们看到的,然后它这个东西是不是跟表有关联啊。
09:02
对吧,那你想想看,我们在真正检索还是两班数据之前,由于。分区信息跟表有关系,表跟库是不是有关系,而库里边是不是记录了详细的HDF路径啊,然后把表拼接,表明拼接上去,把分区信息拼接上去,是不是就直接定位到了我要扫描的那一个分区。对吧,那这样的避免了全面扫描,它不做全面扫描的就是,当然有个前提啊,不是说分区表,只要你是分区表,我就一定不做全面扫描啊。不能这样说对吧,那你告诉我这样做不做全面扫描,你这做不做全面扫描,那肯定做呀,你不做全面扫描,你凭什么把我这书你拿到呀,对吧,我们说的他什么时候不做全面扫描,你V字段V子句里边一定有分区字段的过滤条件,对吧?可以这样写啊,你可以这样按一个什么东西都行。
10:12
And,假如说第一批订单等于20,这个都不会做全面扫量,就是你的过滤条件里边一定要分区字段的过滤条件,能理解这个事,如果说我不按对进过滤,就类似于这个我按照第一批的number进过滤,你能避免全能扫描吗?因为没办法做到,对吧?你不扫描全表,你怎么能查到所有的数据呢?你想要的数据呢?对吧?啊,这个一定要注意一下,就是说分区表呢,可以帮助我们避免掉全表扫描,但是它是有前提的,必须得在什么。就这句话在查询当中,通过非要此句表达式当中选择所需的分值,对吧?指的是这个意思,它就能够帮助我们避免掉全表扫描啊,那就是说在生产环境当中,更多的就按照天去保存数据的,假如说我今天28号,我要对27号数据进行分析,我是不是先限定一下分区,等于27号就好了,我不用全盘扫描,我再去过滤吧,那就比较麻烦了啊,那效率比较低了,对吧?
我来说两句