00:00
好,整个的我们创建表的语法当中呢,呃,刚才又把这个关键字搞定了吧?啊,这个关键字引出来的问题就是内部表跟外部表,然后我们接着往下看,就这个partition的be了,这个关键字了吧?啊这个开始我们讲的partition它本身就是一个分区,所以它创建出来的就是一个分区表啊,为什么要有分区表?分区之前hello的分区,其实就是把一个文件分成了好多个小文件,对吧,也就是说把一个大的文件分成了很多不同的一个小文件啊,主要是对于书籍的一个处理,其实have当中这个表的分区啊,它不是在文件级别的分区,它是从文件夹这个级别来的,文件夹你本身你看啊。我们创建的每一个表,它下面每这个表对应的一个文件夹吧,是不是啊表对应的文件夹,然后具体表里面数据是不是在这个文件夹上有文件存在文件吗?那我们如果创建的是分区表。
01:09
而且我们讲了这个分区啊,其实是分文件夹,那大家想象一下,那最终分区表在这个HD当中,它这个路径的一个呈现应该是什么样子,首先这个表有一个文件夹,肯定没有问题吧,这个表下面所有数据肯定在这个文件夹下,但是如果是分区表呢,是不是应该这个底下还有子文件夹呀,子目录,然后子目录底下有具体的数据吧,就具体的文件对不对啊,它应该是这种关系,其实它就是这样的关系啊,它有什么好处呢?就是你在查询数据的时候,你本身像have操作的都是一个规模非常庞大的一个数据集的。你如果说建立的是一个分区表,它把你的数据是不是分到不同的文件夹里面去存储啊,那此时你去查询数据的时候,可以指定一个某一个分区,我们之前所讲的have,它没有索引吗?他你要查一个数据,它是不是对于全表进行扫描啊,那你要是把一个表里面数据分到不同的文件夹里边去了,然后你查询的时候,你指定的分区就等于指定的什么文件夹吧,那他扫描的内容是不是少很多啊?
02:31
哎,其实他就是为了这书名量太大的时候用的,其实跟生活中一样是吧,然后白让那个什么申红雷或者说张益达是吧,背着他媳妇或者他女朋友藏私房钱,那肯定不往一块藏吧,藏很多地方是不是防止被一网打尽了是吧,其实数据也一样,你要往一个文件夹里边放,你扫描的时候数据量太大了。扫描速度太慢了,所以他要分到不同的文件夹里面去存啊,就是这样的,他就是最终他还是为了他整个查询的时候方面,在V最终指定说需要查询的分区。
03:12
那指定的分区其实最终从HDL呈现,呈现的结果就是指定的文件夹吧,好它会提高它那个查询效率啊,就不是做全表扫描了,全表扫描了。啊,同样的还有一个问题,就是这个分区表一般是怎么建立。啊,一般应用到什么场景,就是在公司当中应用的时候啊,最多的就是每天的日志,每天的一个日志,或者说每个月的日志的,公司就是按天,如果是量特别大的,就按天放一个文件夹,按天放一个文件夹,有的公司呢,就是按一个月一个文件夹,一个文件夹,那你要查询的时候,你要计算你一天的什么用户量啊等等这些数据的时候,哎,是不是不要仔细指定一下那一天的内容就过来呀,对吧,或者说某一个月的,某一个月的。
04:08
也是可以的,这样就是你在做分析的时候,你指定那个数据集会很小会很小。那我们来建一个这个分区表,分区表首先create table,这个肯定要吧,然后我们叫student sto吧,然后下划线partition啊,就标个名字,取个名字就是它证明它是一个分区表啊分区表,然后后面跟着它的一个字段。对吧,跟着字段还是ID,然后是,然后是name,然后是string,这没问题。然后你看啊,你注意啊,这个表里边创建的这个内容是就是整个写线表语句的一个顺序吧,啊,你不要急着写这个柔风了,先写什么。
05:09
Partition t open,对对,然后要跟一个什么,跟一个列吧,然后这个列呢,还要指定类型,指定类型那我们。假如说我们按月。区分按区分的后就是的这个我放了,然后给去了,然后他没非要。没有错吧,如的哦,错了ED termin吧,还是一个钢走一下点成功了是吧,这里边看着比较乱,是因为我中间按了推过键,它的一个提示,其实他这个整个的语法就是我把它拿出来在这。
06:27
这一句,然后还有他是的败了这句,接下来就是最后那个如风,妈的,对吧。它的一个语句,哎,整个的就是其实这样的,整个是这样的,那是创建成功了,创建了一个student的一个分区表,分区表那我们看一下这张表啊,这个表已经有了吧,那我们点进去看,它现在是空的,它现在是空的。
07:05
也就是说他并没有给你创建具体的什么分区吧,也就是说你需要在具体你往里面C数据的时候再创建分区吧,再创建分区的,那我们现在就往这个分区表里面加载一些数据,看看加载数据,那你是不是加载数据还是漏的。Data,然后BT model,然后是斯是吧,然后是student的这个然后吧。是still partition这张表,Partition这张表,然后你想想这张表是一个分区表啊,那如果说我这样现在这样执行会产生什么效果,来看一下他说什么,需要一个指定一个分区列了,因为你的这个表啊,是分区表,因为你的表是已经被分区了,所以说你这个语法是过不去的,你得指明你要往哪个分区里面放法,这地方要加一个帕提,他提里面字段是不是Mo,哎,等于一个假如说我们2020,然后06230623。
08:46
走这个显示成功了是吧,那我们现在哎,从HDMS的这个客户端来看一下,在这吧,还是这个表吧,这个分区表刷新一下,他给我们创建了一个什么。
09:00
DD是什么文件夹吧,啊,文件夹创建了一个目录,然后这个目录是什么命名呢?就是month,似等于我们那个分区的具体的字段嘛,然后这个底下不用想,肯定就是具体的数据了吧,具体的数据了,具体的数据了,那我们查一下这个数据呢?Select新,如果说我们查一下from s to,不应该把这个表写这么复杂。这时候查询的话,它是不是还是进行的是一个全表扫描啊,全表扫描这个没有问题,那我们看一下分区表的一个结构。注意我们刚才分区表是这样建立的,就只有两个字段吧,这个虽然说是一个字段,但是它从帕拜这个关键字里面放的吧。
10:07
正常的,我们之前所有创建表不是分级表的时候,你DC看的内容是什么,就是它表里边字段嘛,字段信息啊,那分区表呢。这个是他什么表的内容的字段吗?然后他还有多了一个什么分区的一个信息吧,哎,它的一个分区信息也是可以能查看到的,它是一张分区表,分区表同样的我们刚才不是往这个表里面塞了一个二三这个数据吗?你还可以创建24吧,同样的你还可以二五,然后这个地方的呈现关系应该就是三个文件夹吧,三个文件夹。
11:10
三个文件夹一般在公司当中,这个分区表的话,如果按天建立的,他就是这样的,就是一天一个文件夹,然后这个文件夹下面就是具体的数据,就是这一天所有的数据。这样来建立的,那我如果现在执行的是select新from这张表拿一下,瞧一下T,我看这张表,你这样查出来的应该数据是多少啊,三份吧,就是每一个分区都能拿到,肯定是三份的,那我要拿一个分区的应该怎么V等于还是等于呢?这于吧,因为也是一个字段,刚才我们不是D看了吗?它其实也是一个,他也是一个等于,那你这个地方你就要把这个拿过来吧,是不是就是拿到一个分区的一个内容啊,一个分区的内容你看它呈现出来,无论你是c select的心还是查一个。
12:28
分区里面内容的时候,你看他把什么东西带出来了,分区字段哎,他也拿出来了吧,它也是给你呈现出来了。其实这个就是相当于它表里面的一个字段嘛,因为你DC看的时候,它确确实实也是以什么column来命名的,它的一个列名称是什么,其实你的分区字段也是整个表的一个字段,只不过它是在分区的位置上而已,分区的位置上而已,如果说我现在要查看多个分区怎么来,就是我现在查看二五跟二四这两个分区内容。
13:10
如果他们搜个当中,我们是不是应该是哦,然后这样是可以的吧,Or或者其实还可以用用方式union也可以,那union那种方式呢,那你要把两个语句再写一遍,然后是这样,那这个还要跑一个麦六对吧?啊就没有哦来的方便了没有二来的方便了,那三个分区是同样的,三个分区是同样的,等他跑完,等他跑完这个还阶段就是他。执行一条搜索语句的话,他就跑那分六任务,所以他就整个的会非常慢非常慢,这样它也是给我们呈现出来的,但是他既然跑麦,它是不是将数据干什么排序了吧,排序了排了一个序啊,但是我们用or这种方式呢?它没有了,那就先读哪个文件,再读哪个文件,从上往下读的是这样的方式啊,这样方式啊,刚才我们所讲的这个分区啊,都是这个分区都是怎么来的,是不是录的数据,他自己给你创建的这个文件夹呀。
14:41
那我们能不能不加载数据生成这个分区呢?就是单独的添加一个分区,哎,这个也是可以的,那这涉及到对于表的一个改变了吗?那是table改变的是S这张表,然后是爱的加一个分区,这个分区是month等于202006225已经有了,二六没有是吧?加一个分区来看一下,也可以添加一个分区,那当然这个底下肯定没有内容,对吧?啊,没有内容的他可以添加一个分区,同样的还可以添加多个分区,同时可多添加多个分区,而七没有吧,我们再加一个。
15:38
注意这个中间我用的是什么空格啊,空格来走。他说什么两个二七是吧,这个改成二八,这成功了对吧,成功了,OK来看一下。一定要注意,刚才我用的是空格吧,用的空格,那既然能添加分区,肯定能删除分区吧,那删除分区应该用的是drop,同样的,前面肯定是out table也是改变表对吧?然后是这张表,然后d drop,然后。
16:20
Partition我们还是从二六删吧,二六这是我们删除一个分区吧,删除一个分区它还是成功的,来看一下二六那个文件夹就没见了,那同样的大家应该知道还可以删除什么多个分区吧,那这个中间要用,大家猜到是空格是吧?哎,就空格试一下啊。所以说为什么一定要刚才强调那个空格。走报错了,报错了,注意添加的时候空格是对的吧,来他删除的时候啊,他要用逗号,这很恶心了是吧,那添加用空格,删除用逗号,这真的很恶心,所以说刚才强调了,哎,这个地方提醒了大家,删要空格删除的时候用逗号来走一下成功了吧,他说这两个分区已经被抓不掉了,已经被抓不掉了,已经没了吧,所以说这是一个很核心的点,你说它语法为什么这样设计,你你添加跟删除肯定要设计成一样的呀,他非得一个空格一个逗号,但你你这个就没办法,人家是就就比你厉害是吧,人家设计这玩意儿,所以说你要你要稍微记一下就行了,添加分区跟删除分区的时候,一个是空格,一个是逗号,一个是逗号,这是关于。
17:48
这个分区啊,会有一个基本操作,就增加删除以及往分区里面添加数据,添加数据,当然现在是这种情况,会有有数据是吧?啊我有数据,那我们先这是所有的它的一个基本的一个操作啊,你可以通过直接添加的方式来把分区生成吧,啊就生成那个文件夹,或者说你手动的去添加一个分区也是可以的嘛,也是可以的。
我来说两句