00:00
好的,那接下来继续阅读我们的源码,呃,接下来呢,我们要进到这个process line方法当中啊,那我们就可以直接切入到这一块了,去读取我们的一个内容对吧?解析啊,上面呢,是告诉我们可以去通过这个什么按下CTRL加C。对吧,去推出我们的jam程序,你比方说在这个当中啊,呃,我们来稍微看一下,首先B看啊,前面东西呢,我们不需要去太关心,我们可以给大家演示出来。我们稍等一下,等待程序运行啊,那这个地方呢,其实我们也看到了一个警告。对吧,因为我们用的是3.1.2的一个呃,Have have对吧,3.1.2的一个have,呃,那么所以呢,在这种情况下,他建议我们have on Mr啊,应该是HAVE2的属一个警告,就是刚才我们看到的那个内容在源码当中,那我们打印出来了对吧?呃,那在这个过程当中,刚才这个地方说的是什么事呢?假如说我们正在执行一个任务啊,Select的新啊,应该是count新,或者说我先看一下我这里边的一个表,对吧,So tables,好,那这里面表呢,其实并不多,对吧?那我可以select count she from这个TX这张表啊,那么它是不是正常的会提交我们的一个MR任务,比方说在这个时候呢,我可以我不想直接运行这个任务了,我可以按住CTRLC啊,按住CTRC,好,那这个时候呢,它就打印了这句话,就刚才我们说的,其实我在刚才直接是按CTRLC把这个内容呢给它干掉了,他让我们。
01:42
继续按下CTRLC退出我们的GM程序,按两下整个的程序退出了,这个任务呢,将不会被提交啊,所以呢,这块呢,我们就可以直接跳过对吧?啊,那这个就是控控制台打印的一个内容。啊,就跟这个完全一样,对不对,在这块。啊,以及这个打印的内容啊,好,这块呢,我们不用关心啊,那我们继续往下游走,呃,那么它定义了我们的一个参数,还是返回值,默认值为零,这个我们不需要关心,接下来呢,它会去切分我们的。
02:14
命令按照分号做一个切分还是继续啊,呃,因为他读到了一个分号进来,不一定就是说,呃,这个line当中只有这么一个分号,对不对,有可能呢,他读的是一个什么文件都有可能的,对吧?他要循环的去读这个内容,那我们不用关心,反正呢,他会去做切分,然后呢,这个注释也告诉我们了,它是按照这个分号进行个切分,之后呢,有一个command啊,进行一个command,然后接下来。我们继续往下游走,呃,它呢,如果说。遇到的是这来一个circle加一个分号继续退出,对吧,这也不是我们关心的,接下来呢,我们更重要的是干什么事呢?如果说看它是一个空行啊,因为我们知道在开克当中啊,我们可以敲回车回车回车。
03:02
对不对,这时候他并不会直接执行啊,就是一个空行,他要做校验的,他要继续往后下游添加拼接啊,那这个呢,是继续也不用关心,那如果说不是空行是以分号结尾的,那怎么样。诶,到这一步了,叫process啊command啊,Process command,哎,这个才是真正解析我们的一个程序,好,那这块打一个断点,为了方便我们后续debug的时候,诶可以断到对吧?有的核心程序呢,我们可以打一个断点啊,为了后续debug的时候可以更方便的看到这里边内容,那接下来呢,我们继续点到中间啊,点到这个方法里边叫process command方法,那在这个方法当中呢,还是一样的啊,设置什么最后一次的command,这都不是我们关心的,对吧?继续往下游走,好,那这里边呢,就有四大核心的一个内容了啊,什么内容啊,第一个在开当中我们可以输入。Quit或者说exist来退出什么程序,你比方说在这块,呃,我接收到的是一个quit命令退出了,或者说进来,如果说我们执行的是exist呢,它照样也会退出了,这是它解析啊,它解析当它启动啊,那我们继续看这边呢,它返回值为零,是一个正常推出的一个过程。
04:21
对不对,是一个正常的退出啊,零都是正常的系统退出零正常的,因为是我们想要主动的给它关掉,而且在我们使用exist和quit的时候,没有任何区别啊,没有任何区别,因为他在原代码当中就告诉我们了这两个,嗯,要不然呢,你是quit,要不然呢exist,而且它会对我们的命令行啊做一个转小写的操作,也就是说我们在命令行当中可不可以写大小写,随便写吧,大小写不区分啊,因为呢,它在当中,最后在代码执行的时候呢,它是通过转小写的方式去做的。啊,所以你写一个大写的quick,大写的exist都没有问题,好,那如果说我们输入的不是它第二个分支是什么呢?假如说我们输入的是一个source source是什么东西呢?也就是说我们可以在里边可以执行一个hick文件啊,那也就是说hike文件不是通过杠F这种方式来做的吗?对,杠F可以。
05:21
可以去执行一个hi文件,那个是在我们并have怎么样啊,直接你杠F并不进入客户端,现在我们讲的是在这个客户端当中,我们也可以去输入一个source去执行一个hi客文件,对吧?好,第二个是执行一个hi文件,这个分支呢,也不是我们关心的,那么接下来第三个用感叹号开头的。如果是感叹号开头的,那表示我们需要在这个内容当中去执行一个。Shell命令了。对吧,在com客户端当中是可以执行shell命令的啊,所以说我们要注意一下啊,那这个这是第三部分,那第四部分这个都是不是我们关心的,你看在我们判断它是以start with感叹号的时候,它就会去。
06:11
执行shell command解析我们的shell命令去运行了,好那这些通通都不是的时候,那这个应该理论是我们那个什么circle语句了啊circle语句了,好那这个时候呢,无论怎么样,它最终执行的都是我们的叫process local command这个方法。啊,那也就是说在这两个分支当中都是用的它,至于它上面所说的这个内容,这个portoc是不是I drive这个类型的,其实对于我们来说呢,并不是很重要,并不是很重要,那对于我们来说,我们主要知道它要进入我们的process local command,注意我们是怎么到这来的,我们再回过头来给大家看一下啊,首先在我们的上面。从我们的这个地方进来。
07:04
我们继续往前找一找,哎,他刚开始的时候呢,通过。输入流读取一行一行的circlel,然后直到读到以分号结尾的这种语句的时候呢,它就会调用process line方法,在process line方法当中啊,继续往下游走,它会调用我们的process command,对我们的命令一行扬的命令再次做解析,好叫process command,在process command当中呢,我们看到它把我们所输入的语句分为了四种不同的类型,第一类叫退出类型,通过输入quit或者k exist,对吧,可以退出我们的程序,第二类以source开头,可以去执行我们的hike文件,第三类以感叹号开头,表示执行shell,第四类就是执行我们真正意义上的一个circle啊,当然这个so呢,包括建库、建表、查询。
08:11
等等的这些内容了,对不对啊,新增啊插入数据对吧?Insert查询select,这是在have当中用的最多的两个,当然也包括建表建库的语句,OK,这是我们客户端对于我们所输入类型的一个解析啊,那到这块呢,我们可以解一下啊,大家要掌握一下这块东。
我来说两句