00:00
好,呃,那么接下来呢,我们看一下啊,第五章DDL这DML了,第四章DDDL呢,我们已经聊完了,其实呃,第四章内容呢,不是咱们的一个重点内容,因为建库建表你会就行了,在公司当中也不会天天去,呃改库改表,什么删库删表这些事情呢,都是比较少的啊,比较少的就是一次,呃,建起来之后往里面放数据啊,去用对吧?那么我们看一下DMLDML首先呢,主要的我们看到的东西啊,其实我们今天说了,第六章这个查询也是属于什么DM当中的CL,但是我们拎出去,因为查询是最为重要的,那么第五章讲的是什么事呢?讲的是往汉表里边导入数据,以及将数据干什么。导出,将数据导出,因为我们正常的数据来说,我们可以用A色的这种方式去往里面写入,但是这种方式一条一条写还是太慢了,是吧?啊,用Y这种方式一条条写太慢了,或者说那假如说我们也知道,那我们还有不的呀,把一个文件直接写进去啊,但这种情况大家能发现到put的这个病例呢,它压根就不会改原数据信息。
01:15
导致你抗新是不是出问题啊,对吧,那上午我们讲到一个问题,那我们来看一下啊,除了这种方式之外,还有一个方式叫log log的加载吗?对吧,大家看一下它这个语法啊,叫log的贝塔有个logo是中括号。可选的对吧,那如果加了logo,它就是从本地。去就是从Linux系统里边去放数据,如果说没有用localo,它就用的是HTFD,后面呢,有一个什么啊,然后呢,跟着落地地址,跟着落地地址对吧,然后呢,可以往里边数据方,呃,接下来是over right啊over right又是中括号可选项,那我们就知道了,如果用了over right,那其实就是什么覆盖你之前表里的数据就先给它删掉,然后重新往里放。
02:13
如果没有这个right。那就是添加啊,添加注意我用的是添加,不叫追加,这种有区别的,因为你之前表里边有文件了,如果用的是追加,那是不是说把你新的数据放到那个文件里面了啊,而添加就是像我们之前铺的一样,往里面又放了一个什么文件啊,就是一个文件夹底下有多个文件啊,这个是不一样的,所以说它是呢添加添加,然后之后呢,是表明。对吧,还有一个可选项,这个地方是partition是跟分区表相关的,如果咱们是一个分区表,那最好我们要把这个分区信息带上,你要放到哪个分区,那分区这个信息呢,我们不用聊,所以呢,我们就看一下前面这些东西,对吧?好,那我们到这来去创建,我看一下是这个是。
03:09
嗯,哦,对,我现在在哪啊,害我是不是上午给他删了是吧?对,我得切到这个default,然后呢,手S,这还是我们上午的这些表对吧?还是这些表啊,测试表,呃,那这个时候呢,我们去准备数据,我看一下这边有没有额外的准题数据啊,没有是吧?还是student这个ID,那我就把这个拿过来吧,啊C看一下啊,可table student,然后ID跟NAME2个字段,Role for field的by OK吧,没什么特殊的东西了,走一下创建了一张表叫student,表完之后呢,我们可以在本地来VM一个student的点S,当然这个名字你可以随便取啊,随便取好,那么接下来呢,是ID加name对吧,那我们插入1001。
04:07
嗯,那就不游泳啊,102谁来陪一下不游泳了,海王海王,你是说不拥泳是海王还是海王来陪的啊?吴大伟是海王啊,班长班长也加入战斗了,对吧?好,那我们有一个本地有一个文件对吧?这个是漏的,刚才记得命令码漏的。记不记得是吧?呃,Log的贝叫这个时候要不要log啊,刚才我们说了log是不是有一个中括号,这个地方要不要log要对吧?因为我们的文件是放在本地,如我刚才说了不要local,它找到路径就是HDF路径啊,那local pass啊,啊路径呢,给一个引号啊,双引号单引号都可以啊呃,你这个地方可以写全路径,绝对路径,也可以写相对路径,那这个地方相对路径你想。
05:18
我们是从哪进到这个客户端里边来的,就是have目录对吧?而我们的student是不是也是放在have目录,它是同一个路径,所以相对路径呢,可以直接这样写的啊,当然咱们可以这样写啊,把前面那个东西全了,对,我们先看写全的吧。写全的大家更容易理解一点对吧?啊,那这个这个都没有问题吧,啊全路径,然后是into对吧,那这个时候我into前面加不加over有什么区别吗。
06:00
这个时候其实没什么区别,因为这个目录里边本身也就是什么没东西对吧?啊刚创建的表啊,所以说无所谓了,Student好走一下。我们就写进去了,我们就写进去了,对吧?好,那这个时候写进去之后呢,我们来查一下来的from是不是能查到数据,说明他将我们的数据其实是上传到了I这d FS you have house student点是不虽TS上传上来了,所以他跟我们铺的看上去好像没什么区别是不是。我铺的不也是这样做的吗?对吧,上传上来上传到这个目录吗?但是哎,那大家想一下会议啊,我们上午所讲的啊,我们上如果说用put写上去的,这个时候看心它是不是不会走MR,而且结果应该是零,对吧,那我们看下它。
07:08
这个就是我们上午给大家说的,后面有一个地方不停,上午我们当时分析的,只要是看到新是不是就不走mmr呀,因为在哎那个my sol原数据当中是不是存在一个number这个属性。直接用的是这个属性给我们返回吧,对吧,大家看一下啊,等会呢,我们要解释一下为什么这个地方诶反而会走MR了啊,先看一下结果啊,三没问题吧啊,只要他跑mmr肯定就是三了啊,那我们看下原数据信息,他改的什么东西对吧?还是切到这个TPS,呃,应该是这个帕对吧?嗯,应该是最后一张表吧,往下拉34了到这来,那你看如果是刚建的表,那么这两个值。应该是什么,应该刚如果说刚进的表什么都没有操作,这两个值应该都是零没问题吧,啊,它两个都是零,你往里put的时候,我们刚说了put,它不会修改原数据。
08:15
对吧,啊,就是两个值都不会变,还记得吗?我们用音色的两个值都会变。如果说我们用in色往里写的话,是不是两个值都会变了对吧?好,那我们上完说了一个在用一个命令呢,就其中有一个值会变,有一个值保持不变,就是我们现在聊的这个什么load命令,Load命令呢,它是通过have去往里写文件的,所以他能知道有一个文件,但是刚才漏的时候,他其实就是把我们的文件上传到了HDFS,他不去读取里面详细的信息,他就不知道多少行,所以他没办法去更新什么。行数据,但是它还是更新了是吧,文件数量啊,那么这个时候你看的新的时候,原数据变了吧,刚才对吧,谁就变了,那这个时候还能用零吗?不能了,因为多了一个文件,你已经知道多一个文件了,那怎么可能还是零呢?
09:14
那所以这种情况下呢,它会走这个mmr,哎,它MR呢,就会去读S数据,它就能够拿到真正的我们的行数。啊,这有三个点啊,我们来说一下,对音色的这个插入数据而言。对于音色的插入数据而言,它会怎么样?对,它本身会走mmr,然后它会修改原数据当中至少有两个我们所能看到的number fives number those,对吧?他知道他写进去了几个文件,同时因为通过MR写的MR是不是说MAP1条一条的读出来去写的呀?啊,通过这种方式他就知道计数器可以记记录有多少条对吧,它就能记录有多少条啊,是这样东西,好,这是银色的两个元数据信息呢,都被改,那既然你把number Rose都改了,我看的新呢,反正求的是不是就是number Rose对吧?那不需要走MR了。
10:13
另外一个是我们之前用的put put这个命令压根就不会,跟have就没什么关系,对不对,对吧?能读到数据完全是因为我们原数据的地址指向了这个公录,所以你在have里边查的时候才能查得到,但是它并不会改任何的原数据信息,所以我们走count新的时候呢,它也不会触发mmr,因为原数据都没动,你刚才的数据我查出来还是这样子的嘛,它也不会走mmr啊,所以就显示的好像数据丢了一样,那种感觉小于真正的数据量是不是对吧?看得出来一啊零啊这种现象都有发生过啊。那最后一个呢,是漏命令,它会修改原数据当中的number five,但是number Rose他不会,因为其实底下他走的也是做这个命令啊,但是他比put多做一个事情,就修改了什么原数据啊,就修改了原数据是这样一个情况,所以他呢会走,那也就告诉我们以后你在用往里面放数据的时候,假如说这有一个文件你是用。
11:13
放还是用put放肯定用漏的了吧,Put的就尽量的去少用了,因为你往你put的进去,虽然塞拉新查得到,但是有时候看新的时候它是出问出问题啊,对吧,这个就很有问题啊,所以你要注意一下,我们就不要就尽量不要用put了,用put只是告诉大家原数据和数据他俩只要两个人都存在就能查得到。对吧,只是告诉大家这个事情啊,所以呢,你可以把put的那个事情已经忘掉,这个都没关系,因为后面只要从文件加载出去,我们就用什么漏,我不用put对吧?啊,也是一样的啊,这个要注意一下,好,那么接下来呢,我们看一下从本地刚才我们用的命令是不是log in pass3,对吧,那这种情况下,那我们想本地的这个东西呢,是不是还在对吧?就相当于它是将东西put上去的,Put不就相当于是复制吗?对吧,相当于复制好,那么那个时候呢,我们做一个事情,我先把这个东西我负责的跟住。
12:23
看啊,那这样在HDM系统里边是不是有了这么一个文件,有了这个文件吧,好,那么接下来呢,我再去建一张表啊给大家看。可以了,Table,我再来一个student的什么,对吧?啊还是这个数据,那这个时候呢,我不用本地了,我用什么他是漏的data不要了,直接写什么给一个路径,那是根录下是不是有一个student点加C对吧,Into table student1对吧,走一下啊,诶这个还很快。
13:09
这比刚才是不是快呀,对吧,文件大小是一样的,好,那我们看一下啊,他干了什么事呢,放心。没了,他有个号,就那页他给他移动到这儿来了。啊,也就是说相当于在ID,如果咱们用的是IDFS上的路径的话,其实它就是一个剪切操作。MV木操作啊,如果本地相当于是复制操作,Copy cp这个地方呢,相当于是MV,那大家仔细想一下,哎,那为什么MV移动呢,从刚才那个目录移动到这个目录,那怎么就那么快呢?记录位置吧。而且可以告诉大家,无论你这个文件有多大,它都是这么快。
14:02
当然文件太大了,如果分好几个小,就是已经超过128兆,分成了好几个块的话,它会稍慢一点。那就聊到我们所聊的IDFSMV的本质的是上,我们看着好像是从另外一个目录移动到这个目录里面了,它其实只要动什么东西啊,那no里边的原数据就好,把那个指向路径改一下,实际数据的路径他会动吗?说从这个目录移到那个步录吗?不会,他放在哪啊,这个数据就是如果从本地而言的话,它放在哪了呀,看过吧,这个里边东西对吧?老生的一个目是不是,嗯,然后还有两两次这玩意是吧?然还有个零是吧?嗯,他在这里边数据呢,他就是在这儿,他不会动。
15:13
那么包括我们可以来看一下这个东西,它它ID叫什么195是吧?啊叫195,我们找一下195啊,还不在这应该在另外一个目录里边,在这个三什么一里边了,195这个吧,最后一个是不是这个东西其实就是我们的什么2195。对吧,其实就这个东西它根本就没有动,你去摸我它根本就不用动,它一直放在这文件根本没动,它只是动的什么东西,那noe里边原数据,所以修改原数据跟文件大小,你1K还是这个,呃,100兆,我修改原数据速度是不是一样的,对吧?刚才我说了,如果你超过128兆,它稍慢一点,因为它修改两个元数据了,假如说超过128兆是256,不到256兆,因为它分成两个块,两个块是不是对应两个元数据信息啊,啊稍微慢一点,但是其实也不会那么慢啊,所以它这个地方加载数据呢,跟那个大小就没有关系了,但如果从本地传就有关系,因为他会需要把我们本地的这个东西啊,就刚才在have里边,它需要拷贝一份到哪啊,到这打DFS,而且他拷贝还不是说用linu命令去拷贝的,他还得走HDFS的那一套API。
16:39
对吧,啊,还得走HAPI,它通过那个它的一个传输底层的那个RPC的一个通信协议去传的啊,那就比较麻烦了是吧?呃,所以呢,从这个机器上传呢,更快一点啊,而且呢,它是剪切,你只要关注这个点就行啊,它是比较快的,对吧?像这是我们所聊的一个漏,哎,从这个本地和SDFS我们都可以做到这个事情,那以后如果我们需要用到的是。
17:07
文件放在一张表里边,那我们就漏就好,好,我们就漏就好了啊。
我来说两句