00:00
好,同样的,我们还是把昨天所讲的内容呢,做一个简单的一个回顾,做一个简单的回顾啊,首先我们昨天从这个rank这个函数来看看吧,Rank函数它其实就是一个排名,一个排名函数,但是它的一个用法,当时我们是不是直接用了一下,它不让用是吧,后面必须要跟一个O,也就是说他是在这个排名啊,是在指定窗口内进行排名的吧,你给他一个窗口大小,然后他在窗口内进行排名的,是这个意思,而且我们知道呢,哎,它有三种。排名的一个函数,在日常生活当中呢,我们对这种三种的一个排名方式也都有所接触,所以很好的就能理解它这种三种排序排序。第一个这个rank如果直接rank,它是如果说两个人相同了,就是它判断条件相等的时候。它就会重复吧,但是它这个总数不会变,也就是说它会将重复了多少个直接跳过去是吧?啊就会呈现这种113113,但是第二个它也会重复,但是总数会减少,也就是说它永远呢。
01:10
都是递增的啊,逐级递增的,它不会跳过某某个数字,它是这种方式来做排名的,那这个row number。啊,Number他就不跳过了吧,哎,他直接走的就是1234,不管你相不相同,不管你相不相同,来的直接就是1234往向排,1234往下走是这种方式,那你要稍微记下来这种三种方式,因为在生活当中都是会涉及到的,生活当中都会涉及到,就很简单例子,就像我们之前所举的就是成绩这种是吧,哎,不同的学校或者说不同的班级都这种三种排名的个方式都有可能采用。都有可能采用,更好的是这rank这个系列的函数啊,他帮我们解决了一个什么问题,就是可以按照部门或者说按照什么类似于我们案例,按照一个学科来计算它不同的部门或者不同学科,你一一条思科语句将所有的数据前三名或者前十名全部输出出来了,而不是说你用limit这种。
02:19
啊,Limit这种的话,你是限制了总的一个条数啊,哎,总的条数,那其实limit做这种需求也能做,那怎么做呢?那你建一个subject的表。然后从表里边呢,一行一行的去匹配数据。就是你一次做一个学科的,懂我的意思吧,Limit这种是不是一次只能做一个学科的呀,但它的一个效率就非常低了是吧,用这这种函数啊,就可以一条搜课语句,将所有的学科啊都可以给求出来啊,这个是很方便的啊,很方便的,而且你相当于在什么电商网站,或者说类似于大数据统计这一块啊,求top three或者说top ten这种的一个案例,无论是写MR或者写搜考都是常见的,包括面试题当中啊,都是常见的面试笔试啊,哎公司,因为现在其实国内的环境啊,像互联网行业。
03:12
大的互联网公司基本上都都去做电商了,是吧,所以说现在电商你像这种求一个订单,或者说一个商品,它售卖价格的一个什么top啊,或者说销量的一个top three啊等等这些都是非常常见的,而且在面试笔试题当中都是非常常见的啊,类似于这种统计的函数,无论它有可能会给你提出要求,就是呃,用MR或者have或者Spark来实现啊,你任选一种,那你是不是最好每种都掌握,然后你当时记得什么,你就写什么最熟悉的是吧,尽量不要去写错了,不要写错了,他不可能说这三种啊,有的公司有这种变态公司让你三种东西,但一般都是他给你提几种方案,就是几个框架,然后你任选一种把它实现了就OK了,就OK了,所以说像这种求呃,Top top ten的这种案例,一定还要一定要掌握的,包括。
04:11
MR阶段的最后一个案例,应该你们在课上没有讲是吧,就套特的案例自己下来一定要看一看,自己去敲一敲啊,自己去敲一敲,那里面应该就用了一个set。做set一个驱虫,S本身是可以做一个驱虫,还可以做一个排序的吧,S它本身也是其实是一个有序的啊有序的。好,呃,自己那个案例还是要敲一敲的,后面是我们讲的这个函数,函数这块主要是它我们可以看到系统它自带的有很多很多的一个函数吧,啊特别多,具体的你要用到函数的之后,你肯定会去,你不会。用这种方法找的,不会用这种方法找的,因为找出来你也不知道什么函数有什么用。你肯定去百度一下吧,具体的它有哪些函数,然后你真的用的时候,百度可能他的一个描述啊,不是那么好,因为它你百度出来答案也是人家的一个博客啊,或者人家自己写的一些日志是吧,都是人家的一个理解,那你这时候想起来,他自己会给你提供一个什么。
05:14
这个函数的一个用法,而且你加上那个extended的这个关键字以后,他给你还举一个例子是吧?啊,你看例子更容易理解一点啊,原生的可以更好的帮助你去理解这个函数的用法,但是具体你要想某一个功能想实现,你要找。Have当中有没有这个函数,那你肯定不会用这个受functions这种方式来找啊,因为展现出一堆来了,你也不知道有没有你要的,对吧,也有没有你要的。啊,当你如果说你百度还没有查到的时候,那你要根据你的业务需求来自己来什么。自定义这个函数啊,自定义这个函数。那自定义的函数当中其实包括这三种,三种。
06:00
Udf这种在公司当中是非常常用的,这两种基本上公司当中在have当中,它直接have里面写一个这个UTF这个函数再去用,很少它会在什么时候用啊,就是你后面学了SPA以后,Spark它有一个Spark搜,就是跟这个have对接的就是SPA,它是也是一个分析框架。啊,它分析框架肯定要有数据来源,它数据来源可以是HDFS,可以是have当中啊,其实have也是HDFS吧,它可以从have这个表里边啊,通过搜索语句啊,就是骇客语句来查询一些数据,查询数据做分析啊,它那个时候你可以制定一些uda AF,就是你在实际的需求当中,你在代码当中来实现这个UDTF跟udf,而且在SPA当中。实现起来比就是SKY来实现,比Java实现要简单的很多,而且通常公司当中都是这样用的啊,所以这块我们主要给大家介绍的是UDF的一个函数的一个创建,因为这块在公司当中应用比较广一点,而这两个函数呢,一般都是在八个阶段。
07:09
啊,在代码当中直接就实现了,实现了就用,现场就用,而不是说创建一个函数,然后用开课语句去怎么样怎么样啊,就是在代码当中,到时候你们肯定会学习到这块的一个内容啊学稍微我现在就给大家提一下啊,因为有的人会说这明明展示的什么自定义的三种函数,然后我们就讲了一种啊,其实公司当中它一般都是这样用的,所以我们授课的一个过程啊,还是跟着公司的一个需求来走的。有兴趣的可以自己去找一下udf跟UDTF,它是用Java代码怎么实现的,它要写好几个类。写好几个类,因为我们之前给他举过一个例子是吧,就是上这个函数,上这个函数你看着好像是计算一下和吧,其实他是一个非常他这个udf吧,它这个函数的一个实现还是很复杂,还是很复杂的啊,你可以去找一下这个上面这个函数的一个源码。
08:04
源码看源码不很简单嘛,你们我们不是做了这个udf啊,怎么来实现吗?不是导了一个依赖包吗?你在依赖包里边,你在ideal里边直接double shift,就是按两下shift是可以搜索类啊,哎,你找那个sum这个函数啊,你看一下sum函数怎么实现的,还是相当复杂的,相当复杂的。但是在Spark当中,这个实现就比较简单了。这块就是它的一个实现,你自己实现一个函数,它需要经过哪些步骤,然后继承这个,还有当中一个UDF这个类,然后就是要写这个函数啊,有没有人是把这个名改掉。就是说不用这个名字,因为你看啊,你在这个udf里面也找不到什么这个函数吧,而且也没有什么O的关键字,它这个函数,你看这个类啊,它也并没有什么负类实现什么接口是吧。
09:08
啊,那给我们的感觉是这个函数应该是随意可以换的吗?但是你们也没有试试吧,你可以试一下把这个函数名给他变了,你看能还能不能成功,能不能成功可以告诉大家这个是不能成功的啊,它必须这个函数必须叫这个名字的,后面就是你去自定义一个函数啊,还是这个方法在这主要就是这个返回值你不能写过。因为最后你这个函数啊,是给具体的什么,这个方法是给具体的have函数用的,也就是说它传传的是一个列进去,他要的是有一个返回值内容嘛,哪怕是那,但是你不能给他一个word不返回,不返回,那样你的一个have当中的一个存储结构就乱了,对吧,好好的多了一个完全是空的,什么东西都没有的,这不合理的啊,表结构就打乱了,不合理的。
10:01
好,这是它的一个相应的一个实现方法啊,就是打印下包,然后上传到呃一个地方地方之后你把它添加在have的窗口把它添加。添加到have里边,它里边以后,你可以创建一个临时函数啊,跟你写的那个类来关联起来,你就可以用咱们这个函数了,对吧,用咱们那个函数了好。后面是我们所讲的这个压缩和存储这一块,前面第一节给大家展示的是这个源码编译啊,有兴趣的或者说有时间的啊,就是明天上午自习是吧。练的差不多的时候,可以把这个搞一台虚拟机,把它这个内存调高一点,然后自己再。编一下看看编译一下看看尝试一下,然后如果你不想编译的,不想编译的话,是不是我们这个就第六节里边。给大家一种让我们现有的这个哈多va集群来支持三比压缩的方式,就是说你找一个已经编译好的哈多啊,它的一个包,然后把它解下之后,主要就是拷它一个native里边的一个内容嘛,啊那些snap.so文件,你把它拷到你现有在用的这个集群那个native下就OK了,然后去重新启动一下,哎,你的一个哈多的一个集群就已经支持snap压缩了吧,啊是这样的,用这种方式也可以直接去做的。
11:26
就免得你自己拿着我们那个这个价包去重新部署一个集群了吧,啊,就没必要,没必要啊,之后是我们所讲的,然后这些压缩配置是跟那个哈多我当中所讲的内容完全一样的,完全一样的,因为它底层跑的就是一个mmr的一个任务,所以它的一个压缩啊,或者说类似于它所采用的压缩方式,或者这些压缩方式的一个什么比较,都是我们从这个哈多堡文档当中直接拿过来的。
12:00
拿过来的,你可以在这块再看一下,然后再熟悉一下,反正总结得出我们这个stapi啊,还是公司当中用的相对来说比较多的啊,比较多的,然后压缩参数的一个配置啊,你这个是在哈豆当中的一个配置,当然我们可以直接在have窗口对这些属性进行修改吧,啊,就是在动态的去指定,而不是说你每次都会采用压缩啊,视情况而定啊,是情况而定,当你需要采用压缩的时候,你在have的窗口里边干什么?诶,去单独的设置这些属性,把它开启就行了吧,开启他在执行具体MR任务的时候,是不是会获取到这些属性值啊,而且我们从MR跑过以后,那个日志文件里边那个configuration是不是能看到所有的一个属性啊,是能看到的,所以说你在这个have窗口里边来设置一下它这个属性值,它也是可以生效的,也是可以生效的,就是map端,还有这个reduce端都可以开启这个压缩方式啊,最终通过reduce。
13:00
丢这种方式呢,我们可以亲眼所见到什么,它输出的一个文件是什么,点snap这种方式吧,啊,就是零杠什么0000,然后点snap这个文件啊。啊,后面是我们所讲的它这个文件存储格式,然后我们所讲的呢,主要是它当中所包含的相对来说比较常用的几个,比较常用的几个,然后我们把它拿出来做一个比较,比较它这里边我们讲的呢,主要是这四种,然后这两种是基于什么存储的,行存储的吧,然后后两种是列存储的,而且我们给大家介绍这后两种的时候,说它的一个量不是完全基于列的嘛,其实它是行列结合的是吧,它是拿出多少行来,然后这么多行来做一个列存储的吧,啊是这种的,它两个都是啊,两个都是都有自己的一个标志的一个索引页嘛,Or RC,你看它有一个index所引标志着我这里边数据啊是多少行啊,多少行的一个内容,而且你看啊,它还有什么,它还记录了各个字段。
14:08
在当中的一个,那这有什么好处啊。那如果说你要查一个列的。一个name这一列的时候,它可以通过这个index快速的定位到某一列吧,然后他把这一列的一个数据全部给你返回出来就行了吧,哎,这样就也是提高他这个查询速率是吧?啊查询速率如果他没有做这种索引的话,你要一个一个的遍历啊,它是不是这一列你做了索引之后,他就给直接标志着这个name就是第三个啊,你就直接拿出去就行了啊,它相应的做了一个索引,同样的我们这个PU的这种方式它也是。只不过它底层是用二进制方式存储的,它既要把它转化为二进制,然后读取出来的时候又要干什么?解析吧,因为想想看,你读数据之后,它呈现到控制台的内容一定是你能看得懂的内容,所以他自己他既然采用这种方式来存储,他在给你给客户端呈现的时候,一定是要解析之后的数据给你呈现的,所以它会多很多一个内容,所以你整个的看着这个,他为了这个结构啊,虽然我们从大体上分析。
15:21
它跟这个什么orc这种方式都是基于行列存储的,但是它这个结构相对来说比。OC要复杂的多嘛,要复杂很多,因为它是基于二进制存储的,哎,它中间要做很多的一个转换,做很多一个转换,这块主要的内容呢,大家了解一下就OK了啊,也不用过深的去追究这块的一个文件,具体的一个存储格式,因为后面我们还要学其他的一个框架,其他框架如果说涉及到存储框架的话,它都会有自己。采用了一种存储方式啊,文件的存储方式,而且文件存储方式很多,你像卖circle,它底层是什么文件啊。
16:04
CSV啊,CSV是什么啊,C还V。看啊,我们用这个打开CSV文件啊,是MYSO底层存储的,它的一个分割符是逗号,你看一下AB逗号B逗号C啊,我们就保存一下,保存下把这个关了,然后我们直接打开。看我们刚才是用逗号分割的,但CSV文件呢,它是这种这种的,还有一个其实还有一个是Windows不支持的一个格式TSV。还有一种T,但是Windows是不支持的,来看一下。我改成TSV。TSV它就变成了这种文本格式啊,其实它看不到具体的一个效果的,但是MY搜狗它底层其实是用逗号这种分格层来来做的。
17:08
就是每周,其实每一个只要是存储框架呀,它底层都有自己的一个存储文件的一个格式,所以你稍微了解一下就行了,因为咱们不是具体做底层这块开发的是吧,如果说你真是做这块开发的,那你对于各个文件存储格式啊,或者说它的一个存储效率啊等等这些要做深入研究,你稍微了解一下,有兴趣的东西你去扩展一下啊,扩展一下,但是我们在汉语当中呢,这几种方式,你了解到它是基于这种行列存储的,它有一个索引标志的,哎,这些行是哪些行,然后。还标志着还有一个索引,在这个行数据当中,它有一个outside啊,就偏移量嘛,偏移量哎,你大概了解到这些内容就够了啊就够了,然后后面是我们做对比啊,做对比就是text,然后pocket和这个orc做对比啊,以及结合了一个什么压缩方式吧,结合了一个压缩方式,那总结经验得出整体来说,我们在公司当中用的最多的还是ORC这种存储方式是吧,然后还是用的是s snapy这种压缩方式,Snapy这种压缩方式啊,来存储文件,它比较合适,最合适的。
18:19
所以这块后面就是我们所讲的这个具体的一个调优了,调优这块这块的东西还是一样的,他自己要去琢磨去看的,去琢磨去看的,这样你们学完之后,这块有一个。你们有没有看这个那种笔记,然后全麦的你们很少用是吧。我开始说了,就是你们在就在练习的时候,还是尽量的用这个插慢的来做,慢的来做。啊,这个打开比较慢啊,我们就接着往上说,就是Fla抓抓取,它可以直接通过Fla抓取啊,不必走什么m Rose运算嘛,M Rose运算就是你设置是末,而且它默认的也是末,就是你执行c select新啊或者长火线字段的时候,它都不会走这个mmr的一个运预算,那他这个效率相对来说就很高了,就很高了,还没打开是吧。
19:20
这个插慢的,他也挺挺耗内存的是吧。这个东西每次彩排都比较慢,还有idea也是,然后这有个总结,看见没,这有个总结,就是主要是基于面试方面和开发方面的一个内容啊,像这个第九章那个调优啊。这个一定是面试当中的一个重点,面试当中一个重点,所以大家到时候复习的时候,哎,可以结合着这个内容来看。内容来看,因为大家可能更多的是关注于这块的一个内容吧,就是你们在练习的时候还是要按照。最好是按照这个来是吧,啊,每一章什么内容,然后你点开之后,你可以看到具体的什么,他要求你做的事,但是你看不到具体的什么还或者代码之类的内容嘛,可以自己去想一想啊,这个具体是怎么写,这样有助于你更快的去吸收相应的内容,而不是说对着这个word文档来操作啊,其实这样的一个吸收效果很很差很差,然后是这个本地模式,我们测一下之前是20秒到一秒多是吧,本地模式就是自己做测试的时候,或者说。
20:25
数据集比较小的时候,你可以直接用本地的模式来跑,但你数据量大的时候,你一定要放到集群,让多个。机器同时工作了啊,你一个机器是忙不过来的,肯定是的。啊,后面表的优化当中,我们主要讲了大表小表效应,然后大表大表与交应,大表与大表的效应,主要是空气的一个处理嘛。其实这种空K的处理手段,最后发现他这个执行时间是不是都比之前长了呀,但是你要理解的,我们要采用这种方式,主要是为了解决什么问题呢。数据倾斜吧,哎,尽量让它负载均衡了,就数据量特别大的时候,你要一旦产生了数据倾斜,你这个任务是跑完的,是会跑挂掉的。
21:09
那会影响整个的一个效率吧,任务都跑不成了啊,你说你说某些。中间呢,有几个task跑得很快,没有任何意义,对吧,没有任何意义,所以你要理解的是,哎,不能说我们一测发现你采用这种方式过后还慢了。太慢了啊,那我都不用,那是不对的,你一定要理解,我们用这种是为了解决什么问题,不是解决它效率低的问题吧,不是解决它太慢的问题啊,不是说为了让他提高提提高速度的,而是为了解决数据倾斜问题的,这两种都是啊,这两种都是后面我们所讲的就是。Ma交易啊,它以它自它现在默认的就是打开的这个交易,打开的ma交易,而且它这个原理就是我们自己之前写MR用distribu的catch啊来做的是一样的,它也是会缓存到。
22:06
每一个map啊,任务啊,缓存给每一个map任务,然后读取一个大表来一一对应的这种一个操作,这种操作你要知道的是你对于这个小表。你是可以自己来设置它一个大小的话,它可以设置的,因为之前我们所讲的什么小表交应大表,大表对应小表,根本不知道什么大表小表。数据量是多大吧,那多大叫大表啊,在have当中呢,它就有一个严格的一个界定啊,就是超过了这个大小那就大表,哎,小于这个就是小表,当然这个属性你可以根据你机器的一个性能来稍微往上调吧,你机器的性能比较好的话,你可以把这个多缓存一点数据是吧,可以把这个表啊,它的一个大小往上调一调,往上调一调。好,还有这个啊,BY这一块其实也是解决的是什么。数据的一个。
23:01
倾斜问题吧,你想想看,Grow by,我们是用grow by来解决这个can distinct can解决这个问题,如果说你不用grow by。先做去重操作的话,那我们所看到的它只有最终一个reducer来做这个去重操作吧。而且这一个radio处理的是全量数据,因为你是要去重嘛,它处理的肯定是全量的数据,但是我们采用了Google带以后,它是变成了两个map任务是吧,有一个STAGE1,有个STAGE2,那STAGE1的时候还记得当时我们把reduce个数设置为五个STAGE1的时候,它就是跑了五个reduce吧。跑到五个,但是第二个阶段一定只有一个,Radio一定只有一个,因为想想第二个阶段他要干什么事了。他还看他了计算总数,那你要是用五个人比来计算总数。不对吧,是吧,你肯定计算结果不对啊,那一定是最后只有一个来计算的一个总数啊。
24:02
所以而且在这个地方,这不知道还有没有,我看一下应该是没有人知道。哈,103088没了关,重新启动了,它就没了,正常就是你执行这条搜,你执行这个circle,来看一下这个select count ID from,就是采用BY这种方式来执行的时候,它在你这个地方。产生的是两个60%,也就是两个任务。你要注意看的就是它同一条查询语句后面还有一个括号,STAGE1跟STAGE2,来我们测一下吧。因为光说有的同学可能比较晕是吧,数据在这来测一下。然后主要看一下我们的一个日志,他这个日志打印,它不是说就全部打印到一个里边了,这个我们没有设那个什么。
25:04
维的个数是吧,那其实它这个第一阶段也是一个,第二阶段也是一个是吧,那我们主要看一下它是两个阶段,它是分成两两个在这个地方分成两个日志打印的。你可以刷新一下,你看它虽然是这个sol语句,但是它后后面还有一个什么括号,标志着STAGE1啊,这个STAGE1其实就走的是走的是go那个子查询。刷新一下,它已经走到STAGE2了吧,根走完了,你看它此时走了一个STAGE2 stage2也就是说我们这个。有的黑客写出来啊,不是说一条黑客对应一个MR任务啊,不是这样的,有的黑客你像此查询特别多的时候,它会对应四五个map都有可能的啊,就是说你后一个MA6是不是在前一个的结果上来进行计算啊,来进行计算的,就类似于我们要写MR的话。
26:01
你要写两个MR吧,第二个是。输入数据是第一个MR的一个输出结果吧,啊是这样的。还有两个日志正常,如果说你把这个地方M6的一个个数,就是六的个数设置成了五个以后,你点到这里面来。不是这是这后面有个log是吧,History连进来。这个地方如果你设置了五个的话,你会看到这个是五个,但是。这个地方。无论你设置了三个五个,它这个地方永远都只有几个一个,就跟我们order be是一样的,因为它只能交给一个reducer来处理,它交给多个V,它这个结果就不对呢啊,因为它是计算总数啊,像autob它是全局排序啊,那你不是一个做的,那怎么能叫全局排序呢?啊,是这个意思啊。后面那个笛卡尔提啊,笛卡尔提尽量避免就行了,还有这个行列过滤。
27:00
行列过滤行列过滤这里边我们提到了一个新的名词叫什么?还有印象吗?就是先执行过滤,找到表之先执行过滤,然后那个叫什么叫为此下退有下去查一查什么意思。也也没有查是吧,查的结果其实已经告诉大家了,就是他是找到表之后先过滤,先过滤数据啊,而不是说把结果执行完了之后再过滤啊,它本身have当中是做了这个优化,在优化器时候,它经过优化器的时候,它会做这个步的优化,但是你在使用这种表关联的时候,如果你把这个什么关联表的这种。字段写到了二后面。那它的一个位置下推这种啊就失效了,它就先执行的是交椅,然后再执行过滤,哎,这个时候我们要做的优化就是你自己手动的。
28:01
去先让他执行过滤吧,手动让他先执行过滤是这样的,因为它本身还有是会做这个优化,但由于你写词会语法写的不是很规范啊,导致它那个优化不生效了啊,就降低了一个效率,所以说你这一步你要自己手动的让他先过滤,过滤完了后再交易啊,过滤完了之后再交易。啊,后面是咱们所讲的这个。动态分区啊,动态分区这个昨天课上我们演示的是什么。从一个分区表导在一个分区表里边是吧,那其实公司当中你说肯定不会这样用,你本身都是分区表,你再导到分区表没有任何任何意义是吧?最后给大家讲的是这个。我们自己写了一个什么?分区表,然后从EP,我们之前用的EP这张表不是分区表啊,从这个表里边来导入数据,这个导入数据你要注意的一个点,你看首先。
29:00
首先是第一点是这样的,就是你ERP这张表是原始表,不是分区表啊,然后你还有一个emp这个P这张表是分区表,首先这两个东西的字段,你要确保的是这个里边非分区表的字段等于分区表字段加上分区字段这个两个是一样的。能懂我什么意思吧,就说你不要说建表的时候,你把原表结构还建的跟他一样,然后额外指定一个发,不要这样,你就拿着它中间的某一个字段来做你爬行线的一个字段就OK了,是这个意思啊,这块你要懂第二。你的顺序。你插入的这个顺序,你最终不是往这个表里面插入吗。你搜的插入的顺序字段肯定是按照这个顺序吧,就见表的顺序吧。然后你做在在最后吗。是不是啊,你要保证你查询的这个顺序啊,要跟这个顺序对应起来,懂我什么意思吧。
30:05
我这个地方能写成c like的心,是因为我这个EP这张表啊,它最后一个字段就是第1p number。正好对应上了,要不然他就会如果说最后一个字段不是第1PT number,而是。这个EP number,它就会拿到EP number来分区,来分区懂我什么意思吧,就是它是主要是按位置来对应的。按位置对应的啊,它这个地方你叫什么名字。我们测一下这个问题啊,看这不是dpd number吗?我们改成ID可以吧,我们新建一个PART1这个表可以吧,这跟原来的表完全不一样了吧,而且这个字段你看在EP这张表里面,这个字段叫什么?第pd number,现在我们这个分区字段改成了什么?第一,Pd ID。然后把这个拿过来。
31:02
那这个要改成ID啊,这个地方要跟你这个分区表对应吧,这个地方要改过来的CRC。走。DPD等于none。为什么出现了有的同学出现了这个问题是吧?哦,表明没改对。这个是一。因为EP老的表里面没有这个DPD是吧。啊,这个是那个属性,属性没开是吧。就是这个属性啊,还记得吗?动态非严格模式啊,因为现在在严格模式下是吧,他不让你干什么,动态的一个分区吧,OK。窗口关了,像我们在这个里面写的一个内容,它是不是就不生效了呀,然后把这个拿过来。
32:05
C。走你看它也是能正常添加的,也就是其实说它并不是看你一个字段名对应的吧,它是看位置对应的啊,看位置对应的,他找的是位置,而不是找的名字。这你要注意的一个点啊,就是他要看位置啊,这个地方我能写成C来星正好,哎,这个分区字段跟我最后一个位置是对应起来的吧,你能写成最后一个,所以说你在这种动态分区的时候,你要保证它那个位置是一致的,你看是不是加载进来了呀。在这个地方看一下啊。好,杜鹏1025007。然后哎,这个十二十三十吧,但是它所采用的什么。
33:00
是dp didd,因为你指明的这个分区字段名叫这个啊,所以它是它不是说两个,它自己会去找匹配的字段名是什么,它不会这样的,它不会这样的,它会去具体的找什么。找你的位置啊,它是根据位置来对应的,根据位置来对应的,好,这是我们所讲的一个动态分区,而且公司当中肯定是这种用法,而不是说我们之前所讲的从一个分区表到一个分区表里面这样去导,那样是没有意义,但是那样也是可以导成功的,是吧?哎,动态分区也是可以导成功的,但你要注意的是。就是把这个属性要改一下吧,要不然他不让你用这种动态动态分区是吧,OK。这整个的是我们。昨天所讲的一些内容,后面是分区分桶,也是为了做什么好便于管理的,然后查询数据的时候呢,可以少查一些数据,而不是查整个的一个数据啊,你要知道这个分区分统啊,在公司当中是其实是优化还有表的一种方式。
我来说两句