00:00
我们看一下这个他说的have常用的一个交互命令。正常的我们之前什么create啊,什么drop啊等等,那都是一些骇客版,骇客语句啊,骇客语句它不是一个什么交互命令,这个交互命令是什么意思呢?只在那个。Linux系统下呀,直接可以操作have的内容,Have的内容,然后你敲这个并have have,它会有很多啊,这一些我们看一下,但是常用的不就两个并have have。他会有什么杠D,杠E,杠F,杠S,杠I等等,它后面也是有跟着他的一个具体的一个参数,然后它的一个用法,然后我们用平常当中,在工作当中用的比较多的是这两个。一个是杠一,你看杠一他说什么?
01:01
从命令行获取的一个搜口,就他肯定也可以执行搜吧,但是他是从命令行传进去的,对吧,还有一个你看杠F,它后面跟着一个file name。跟那个好,他是什么文件当中的搜吧,哎,这两个相对来说比较常用的,常用的,那我们做一下并汉。对了,我们没有没有表是吧,因为我们这个库换了呀。对吧,对,看我们重新创建一个student这个表,对吧,要不然我们现在想操作任何内容没有数据啊,之前的数据在德比数据库里边,原数据信息知道吧,所以现在呢,你查肯定查不到任何内容的,因为它跟HDF上那个文件啊,没有形成对应的关系,那你这种受database。
02:03
他有deft吧,又是一样,那个deft其实你默认进来啊,他就是这个T,你可以直接在这说table,你正常在卖S里面是不能做这个操作的吧,做不了他报错吧,他说你没有那个数据库,但是have当中呢,你默认就是你一开这个启动这个窗口,它默认的就是在这个default这个数据库里边。你可以用再用一下U压P报也没问题,但是你可以直接受tables。这个时候他没有什么。没有任何表啊,因为我们换了存储原数据的一个地方,它那个原数据之前那个原数据我们拿不到了,那我们需要重新创建一下吧,Create table student,然后是I,然后是然后,然后这个东西大家可能还记不住吧,现在。
03:04
只不过。但是大概能知道点东西对吧,它其实就是指明的什么字段之间的分隔符是吧,如,然后是。自带的一个分割符,然后是term的。高地吧。钢抓紧成功了,那这个时候我如果执行这个操作会怎么样,大家猜一下有没有数据。猜一下。我们之前讲的创建一个表,其实在数据库,就是在那个MY克那里边,现在叫MYS克吧,之前是德比,现在MYS里边创建了原数据信息,对吧,这个原数据信息指的是,哎,我这个表跟什么。
04:08
跟HDL上的文件的一个对应信息,对吧,好,上午我们是不是上创建了这个表。创建这个表,但是这个原数据信息啊,是放在德比数据库里边的,对吧?好,现在我们又创建了,也就是说此时我们德比数据库跟MY数据库啊,它都有这个原数据信息了吧。就是,而且他们俩原数据是一模一样的,是不是因为我们创建表的语句执行的是完全一样的吧?好,你再想一想,上午我们在创建完这个表之后,是不是漏的什么什么东西啊,可能具体语法你不太记得对吧,但是你知道我们操作那个是干什么事。导导入反正是导入数据对吧,导入数据,那导入数据我们讲have里边,它是把数据存在SDFS的,也就是说我们本来这个数据啊,是在这是不是在这,我们通过那个命令应该能感觉到我们是把这个文件上传到了HDFS吧,也就是说我们虽然换了数据库。
05:14
原数据丢了,但是HDF上的数据不会丢啊,不会丢吧,哎,对了,他不会丢那。HD数据在这,现在我创建了这个表,是不是等于把它原数据找回来了呀?因为你现在就是你刚才这个地方查不到,是因为你没有这个表的原数据信息啊,是吧,你在这个地方受tables它为空的时候。是没有原数据信息,MYSQL里面没有原数据信息,对不对啊,但是现在你创建了这个,是不是等于在MYSQL里面补充了那个原数据信息。那这个茶。是能查到的。
06:02
是能查到的,所以说你加载数据啊,那个步骤,其实它也是加载到具体的一个位置上,然后你只要那个位置上有数据,加上你有这个原数据信息,你就能查到数据。你就能查到数据是这样的啊,这是我们导入了一个数据啊,然后我们要讲的是那个交互命令,对吧,交互命令。这块还要大家去慢慢的去理解啊,因为have它存的MYSL当中是一个原数据信息是一个对应关系啊,一个对应关系跟HDFS文件的一个对应关系,你文件有了对应关系,有了它就能查到,就能查到,那我是不是可以这样直接弄一个文件,如果我能找到那个表在HD上的存储位置,我直接把一个文件扔到那个目录下,它也能查到啊。只要你有这张表的话,是不是啊,它确实是能查到的,直接扔进去就OK了,但是你的分隔符要跟人家表要保持一致嘛,要不然就那么对吧,字段对应不上了,好,那我们来测一下,刚才说的常用的是一个杠E,一个杠F。
07:16
对吧,退出一下一个是杠一,一个杠一呢是从命令行获取一个。So,获取一个circle,然后它是跟着一个什么ch string嘛,啊,就跟着一个字符串产品的字符串,那我们操作一下b had-E吧,跟这一个字符串,那c like这就没有提示了,是吧?来个c from student这张表do OK。走一下,感觉他好像启动了是吧。
08:02
哎,他把这个数据给我们打印到了控制台吧,控制台但是他其实也是启动了就查询,然后自己给它关了,就给我们感觉是这样吧,这是通过这个杠E可以执行,在命令行传一个语句进去执行,然后还有一个是杠F对吧,它可以从文件当中获取草稿,那我们来做一下啊,我们。把这个文件就直接写在这吧,Touch,一个have点。还好啊,这后缀名其实无所谓对吧,Linu的特长,但是你自己为了好区分,那你知道这里边写的是一些搜索语句,你自己给自己标注一个后缀名,是不是你这个地方写点后缀名都一样啊,对吧?那VI一下这个还点海口里面我们写一个那个的新from student这张表,Student表,然后保存退出,然后我们用B。
09:07
Have,然后杠F啊来执行一个文件啊,执行一个文件,那这个文件是不是叫have.hi读一下。哎,这样也是可以执行成功的了,而且你像这个执行结果,你还可以追加到一个文件里边。Have result.txt后缀名其实都无所谓啊。这个时候他就不打印到控制台了吧,那L看一下他多了一个这个文件吧,啊,我们看一下,看了一下have result txt,哎,他把它这个结果啊,可以通过这种方式放到一个文件里边也是可以的。
10:10
那大家想想这种什么杠E-F有什么好处啊?害我是干什么用的?做什么离线分析用的吧,它应用最广的场景是离线分析,然后离线分析我当时说了就是你说每天呢者每个月的呀,或者每年的一个数据啊,做分析吧,那这个时候你是不是每天的,而且我当时还举例子,就是你晚上12点或者凌晨两点的时候去跑一下任务啊,那如果说你凌晨两点的时候跑任务,你说如果他不提供这种交互命令,不能没有一杠一杠F的话,你只能启动一个还有客户端,然后把数据算出来,然后拿出来,那你是不是只能干什么,到两点的时候你去一趟机房嘛,或者说你打开一下你的电脑远程连接一下是吧,去跑一下任务太麻烦了。
11:10
所以说他提供这种交互方式啊,也就为为了方便你制定这些任务的。那你在你搞一个C,现在我们写的定时工具只有一个写的Li自带的一个C,比较轻量级的是吧,当然后面我们还会写一些框架,它可以复杂的一些业务逻辑,他能帮我们完成的,那假如说你就C吧,因为你每天定时的,或者每个月这种看德就够了,那你要执行一个分析一个文件。分析一个文件,每天的。增那个增量用户啊,新增用户啊,计算这个内容你是不是每天都要执行啊,那你就可以把那个执行的circle,那每天执行的搜其实是一样的吧,哎,执行的circle放到一个文件,或者说放到一个字符串里面。
12:05
啊,那你用C去执行这条命令,这时他就可以了吧,然后追加到一个地方就能拿到实际的一个数据了,而不用你非得把害我这个客户端启动起来之后,然后手动去查询一些内容啊。啊,这样是很方便的,他从他能从外面去自己帮你查询到的话,很方便的啊,至少我们可以做定时任务了,定时任务是可以完成的,好这是我们讲常用的两个,但是其他的如果你想了解的话,可以去看一看,因为后面有它的一个用法,具体用法最常用的还是杠一根杠F,杠一根根法杠F。
我来说两句