00:00
好,那么接下来呢,还有一个动态分区,还有一个动态分区,之前聊了一个二级分区是吧,现在还有一个动态分区,所谓的什么叫动态分区呢?是这样的,那也就是说现在我们所采用的方式啊,之前load命令这种加载数据呢,用的都是静态分区的方式,也就是说这个分区信息是怎么样啊,指定死的啊,你不指定它其实也是指定子的,就是相当于它你不指定就等于是他指定了,就所有数据都要往什么,往这个分区里边放,对吧?是这样的一种情况。啊,必须往这里边去放,那所谓的动态分区是什么意思呢?就是我准备导的数据啊,我也不知道进到哪个分区,我可能根据查询的一个字段来决定。啊,就比如说现在呢,我第一批列表当中是不是有十二十三十五十。
01:03
有这四个部门对吧,就是啊不是第第一批列表应该是十二十三十四十对吧,有这四个部门没问题吧,来行from这个第一批地表啊,是不忘了十二十三十四十对吧,我现在呢,我都不想按照什么日期进行分区,我就想按照这个第一批number进行分区。我就按照某一个字段,那你能说我select从这张表查出去,往分区表里面插入的时候。我写死一个分区能行吗?不行,我们必须得用什么所谓的叫动态分区,因为动态分区就是我们在插入数据的时候,我们就根本就搞不清楚这个数据呢,到将来要去到哪个分区里面啊,那我们再来创建一个表啊,Table,然后呢叫第PT啊,然后number啊,以number作为分区的啊,Number分区OK吧,然后还是一样的字段呢,我们跟之前保持一致啊,在这个地方随便拿一个这个建表语句就行。
02:14
还挺远的是吧,在这啊,就这个字段来,然后对吧,数据呢放在这,然后我干什么呢。加ED是吧,我按照什么,我再给它扩展一个段,我按照这个number进行分区啊,最后呢,我在指定他的一个哪块写错了。啊,这个东西还不行,就是在这个地方我把你拿过来啊,我们要按照他进行一个分区,这个地方呢,我给它干掉,这个地方给它干掉这个东西啊,这个东西我得给干掉,就这样。
03:03
就前面这个字段啊,就是字段重复了,因为我们之前说过分区字段也是它最普通的一个字段嘛,就不能用两个一样的字段比啊好,那这个表我们就创建好了,就创建好了,那接下来我们要往里面放数据。要放数据了,对吧,以前放数据呢,可能我们有两种啊,叫漏的data,什么local pass用这种方式,还有除了漏的,我们现在想把第1PT表给它放到这张表里边。那怎么写啊,叫in色的into,或者说overright,对吧?Table往这张里面放,这是一个分区表,那往往我们是不是要加一个什么分区信息,如果不加的话,它又怎么样,要默认的对吧?分区信息好,分区信息呢,字段是它。等于一个什么东西对吧,我们先空着啊,先空着,然后查询导入是不是CLA的,查哪些东西啊,第一个字段我们是不是要D内嘛,那我就把另外的一张表的D拿过来,第二个字段要什么LC对吧?LC拿过来from这个什么第一批D张表啊,第一批的这张表对吧?好,那这个地方如果说我写了,我写什么东西呢?我先写个70,跟我们那个数据没有关系,对吧,我们数据是十二十,30,四十五十啊那这种情况下我们看一下。
04:31
能等对吧,因为我们写死了,其实这个是属于叫静态分区,那我们把这张表所有的数据是不是放在70号分区了。对吧,我们等他跑完我们来看一下,但是刚才我们所说的结果,我们是不是不希望这样。等会我把那个reduce的个数给它设置一下啊,因为咱们数据量小,你分四个反而起四个。JM还不好对吧,反而还卖了。
05:02
还不如用一个呢,那这个时候呢,我们就看一下刚才我们所写的这个分区表,按照number进行分区的70这个数据,那我们查一下select新from,所谓的叫depd_number p是吧?哎,数据呢,呃,数据放进来了,没有问题。啊,放到介绍分区对吧,介绍分区我们只只有这个内加上它的一个什么LC嘛,对吧,最后一个字段呢,它的一个分区,这个是静态分区。进量安全,那我们刚才所说的,我们是希望用dpd number来作为他什么?分区对吧,那大家想一下这个地方怎么写。怎么写了就不写就不写,你写你知道写什么东西吗?不知道,不知道就不写,但是不写的话有一个问题,那它到底是多少呢。
06:08
那他凭什么知道十二十三十四十呢,有什么办法呀?对,有同学提到了,在这写一个P动态分区这个地方呢,你直接写分区名,完了之后,在这它会自己默认用最后一个字段作为它的一个分区信息,来我们把这个运行一下,它用的是最后一个字段作为分区信息,也就是说当前这张表里面是不是只有两个字段呀,就我们建表的时候加上分区字段是不是三个字段对吧?你正常前面照写最后一个字段留给我分区用就好了,来分行报错了来看啊,这个报错呢,不是我们其他的问题,他说什么东西啊,他说动态分区现在是一个什么。所谓的严格模式,在严格模式下不允许,他说至少得需要一个静态分区的一个字段,但是我们刚才说了,我们想用的是动态分区,对不对,对吧,他说关闭当前的一个内容,把这个属性设置一下,那我们先看一下这个属性啊,那毋庸置疑,这个属性肯定是什么。
07:18
肯定是这严格模式对吧,那我们需要把这个属性改为然这啊改了改成非严格模式,然后接下来我们做这个事情。哎,这个就过了对吧,这不是我们so写错了啊,是它有模式的问题啊,默认情况下呢,也就是在默认情况下,它是不允许使用什么。动态分区的对吧?啊,我们先把这个去完成一下啊,等会还有一些其他的参数啊。嗯。那这样的话,我们就可以根据表里面的数据信息来决定它去到哪一个目录了,对吧?啊,从用一个字段呢,把目录给它分开,那我们刷新一下这个外面来啊,那你想应该多了几个分区。
08:14
这张表如果刚才不成功的话,应该多几个分区啊,四个吧,十二十三十四十对吧,十呢就对应一条数据。啊,对应一条数据,就十号分区的那个数据吧。对吧,一千七对吧,然后接下来还有20号,诶这个地方啊,一千八他没反没没反应过来啊,没反应过来是吧?一千八啊是这样的一个情况,你可以去对一下啊,它是根据这样一个情况来做它的一个动态分区啊,动态分区的好,那么接下来呢,动态分区当中还有一些点啊,还有几个参数啊,还有几个参数,呃,开启动态分区功能默认是数,所以刚才他并没有报错。
09:01
对吧,因为默认动态分区功能就开了,第二是不是要设置为非严格模式啊,刚才是不是直接报错了,所所以呢,你在使用动态分区的时候,你必须要把这个东西给它设置为nont啊,这是严格模式,然后接下来还有一个这这个属性啊,其实还好,这几样抵押几个,其实我们都没改,对吧,这个说在所有执行的MR的节点上,最大一共可以创建多少个动态分区,默认为1000。就是当前一个MR节点上能创建什么,1000个动态分区,如果说你数据假如说这个部门超过1000了,这个值是不是要改一改,对一般的来说也很少达到这样的情况吧,然后接下来还有这个。哎,这个是我们刚看到啊,不一样,这个叫所有执行MR的经典上,这个呢叫每个单个节点。
10:03
啊,那我们现在有102103104对吧,三台机器可以执行我们的任务,这两个属性呢,就是说你三台机器加在一起最大不能超过1000,然后单台机器还有自己的什么。限定啊,就是你这一台机器,你这个MR任务在这跑的,你限制多少个啊,然后接下来还有在整个Mr job当中。可以创建多少个是DF文件啊,就是说在里边能创建多少个H是DFS文件对吧?啊,然后还有一个当有空分区生成的时候,是否抛出异常,不false也不用管空分区,那是因为你数据本身这个东西可能是没有数据的,对吧?啊空分区那这个就不用管了啊,是这样意思,那其实这几个参数当中,我们是不是只需要设置它就够了对吧?其他的其实这些数据啊,默认值我们基本上都达不到啊,在生产环境当中其实也达不到,你一天其实没有那么多可以创建的一个动态分区,说1000个很少很少,中小型公司更达不到了,所以这些属性我们就不用管,所以这当中我们要稍微记住的是不是就这个属性啊,对吧?啊,就是在严格模式下,它不允许我们使用动态分区,其实这个你也不需要去记,因为当你用了动态分区,你直接去用的时候,如果他再严格模式下,他给你干什么,他给你报错对吧?哎,他给你报错。
11:28
啊,是这样的情况。
我来说两句