00:00
来have务这个脚本任务,Have务脚本任务,这个have务的脚本任务就是跑一个呃circle呗,跑一个circle,那这块这块这个案例是什么样的呢?我们来看一看啊呃,这里边呢,有一个现成的这个S后L脚本,我们看这个S后脚本里边是什么啊?呃,咱先不看它吧,先看一看正常情况下咱在数仓当中这个如果说要真要跑一个四核脚本应该是什么?呃,其实很简单,就是你看我have当中不是这个,呃,就是我数仓当中不是数仓会分层嘛,对吧,然后其实每层我前面也说了,都是不同的库或者是不同的表嘛,就是你这个搜狗脚本指的是什么?就是将这个数据查出来,然后查出来按照什么呢?按照你后边的业务逻辑进行进行分析,比说你要搁如何办呀,还是你要这个排序啊,还是取套文啊等等等等这些东西,你把它算完之后呢,将结果给它写到下一个表中,其实就是怎么一个一个非常,嗯,通用的一个逻辑,什么逻辑就是insert allright下边这个表,呃,指定的分区啊,然后后边select。
01:00
From这个其实正常下都是跑这样的任务啊,都是这样的任务,行,那大家先知道正常情况下是怎么样啊,这个具体怎么写到出仓的时候呢,大家再才会学习到啊,然后我们现在呢,就先来跑一下这个案例吧,这案例我们看它这个脚本是个啥啊,咱把它拿出来看一下,看一眼我CTRLC可R,我给它放到哪呢?放到这个地方咱看一眼啊,看它执行了什么逻辑啊,看一下它首先用了柚子default,用我们这个默认的库嘛,Have里边的啊,然后干什么删掉一个表,呃,然后再把这个它S表,再给它创建出来,创建出来出来之后这里边有几个字段呢?两个字段,一个ID,一个这个name,两个字段,然后这里边row format limit for fields terminated by,这个杠,T,这不用管它。这是我创建一个表呗,就是个表,然后后边呢,呃,将数据加载到这个里边,呃,加载到这里边,呃,这是它这个完事,再往再往后呢,是不是将数据加载到这个表里了吧,漏进去了,然后再往后呢,再把这个数据从表中读出来,然后读出来之后往哪放,这回是放到本地的路径吧,啊也就是他干什么创建一个表,把数据导进去,然后再拿出来啊,就是一个这样的逻辑啊呃,这个逻辑现在不重要,我们主要是看看怎么去调度这个have的脚本啊,行,那我们就按照他这个逻辑吧,但是他这个逻辑,我现在如果说要跑他这个逻辑的话,咱得准备一一些数据吧,什么数据啊,得准备一个,这个首先得有一个student.txt得有一个这样的文件,这个文件呢,呃,我在哪呢?其实正常情况下,如果真涉及到have导数据,你这个数据也不会在本地啊,是不是也得在HTFS上啊,呃,这边呢,就咱就为了演示这个效果,咱就用本地吧,用本。
02:47
用本地这边呢,我需要在哪,我需要在他指的那个路径下边去创建一个这样的文件吧,呃,当然你可以在那创建,也可以怎么样,甚至你这个文件你都可以写相对路径,然后我一块儿传上去,甚至都可以这样,但是如果说真涉及到就是真涉真实情况下真涉及到什么呢?涉及到你要从本地导文件导到HDFS,导到你那个,呃,Have表当中,你这个就不就不能写相对路径了啊,如果说你数据量特别大的话,那你这会千万不要不要不要这么去干,不要跟这个呃,点到的文件一块打一个这包,这包一块上传,为什么?因为数据要存到MYSQL里边吧,对不对,你这些文件都要上传到MYSQL当中的啊,所以说如果说你数据量特别大,千万不要这么干啊,咱这只是模拟一个这个情况啊,那这个load date local in pass,呃,然后这边呢,咱就去这个路径下边去创建一个使有单词点TSD吧,咱去创建一个啊来呃,我去这个相应的路径c do。
03:47
BD modeldu的date下边来,在这里边呢,我V一个ste点,呃,这个TSTT啊有了,呃,有了之后咱把这给它插入几条数据吧,呃,它的那个数据ID是int类型吧,来我看一下ID int类型,然后这个name是s string类型,那就随便写几个101,然后以type键风格来咱写几个这个名字吧,咱写一个名字,写一个咱班的风云人物,有没有风云人物啊,咱们班长呢,就班长是吧,班长那就写班长吧,班长来这个1002,然后再往后呢,副班长吧,副班长,呃,再往后1003,再来一个菜,还有谁谁的呼声比较高了,学习委员是吧?学委员行,没有了是吧,没有了我凑个数吧,来,我凑个数吧,来这个你,你得叫波波老师才对啊,你就不尊重老师啊。
04:47
来104啊,呃,104 104完事之后呢,这个行,104我就不写了啊,咱就写这么多吧,来我WQ一下啊,保存WQ呃这几个,咱就把这个文件给它放在这二之后呢,我再看看我还需要准备其他东西吗?咱还需要不需要了吧?不需要了啊,咱只需要准备一个这个文件,然后他一会会干什么呢?会把这个,呃把这个什么呢?把这个数据给它输入到一个指定的路径,然后这个路径是不是也是date下边一个student这个文件夹下边啊也也是一会呢会出现一个这样的文件夹,然后里边呢,存着我刚才往表里边导的那些数据是这样的啊,然后我这块给大家提个醒啊,就是你要真跑这个逻辑的时候,你千万不要这样啊,就是这个路径呢,你不要随便写,你别说你这个感觉这个有点麻烦,我直接在下边就完事了吧,直接OPT model对下边就完事了,把这类去掉那这块嗯,你把把后边都去掉,那这块会出现什么问题呢?你看这是什么over right啊。
05:47
对他你如果你这边要是对你要写的直接写op的Mo,那你op Mo下边所有东西全没了,所以这块大家要注意啊,这个有点危险,或者你别写allright了,你别写allright了,你你就对追加就行了,所以这里边大家留意一下啊,因为为什么前面有同学遇到过这个坑啊,他自己就写了op Mo,然后里边东西全没了,不过好在他那个有有那个有那个快照啊,又恢复了一下,又恢复过来了,这个很危险的啊,这块行,呃这个没啥关系,我这个CTRLL一下,然后咱把这个呢给它,呃写到一个这个呃搜后L脚本里边来,我这个需要保存什么呢?需要保存成这个,呃,需要保存成这个s student,呃叫这个什么呢?S student still.circle啊这一个circle脚本嘛,来WQ,保存好保存了,呃,保存了之后接下来呢,是不是得写那个,现在只是有这个S后L脚本了吧,但是我一会是不是要跑这个思后脚本呢?所以说还得写一个这个来点招文件。
06:47
来这回叫什么呢?就叫做have.job嗯,have.job然后这个里边写什么呢?Type啊T,然后等于c and command demand的,然后com command demand的等于什么呢?等于have,杠杠啥呀,杠E吧,哎,杠E行吧,不行吧,杠F吧,对,因为因为你杠杠E是一个S,然后这个杠F呢,是一个脚本文件,是这样的啊就是那接下来我是不是得指定一个脚本文件啊,你这个脚本文件你一会存哪啊。
07:20
我就不往上放了,我也一起传吧,就一起传也就,哎是不是就点杠就行了呀,点杠student student.circle是不是这样就可以了呀?诶这样完全可以没问题啊没问题行,那这个有了,有了之后呢,我CTRL,呃,我把这个呢,我CTRLS我保存一下啊可冒的命令写错了是吧?啊a OK thankyou啊好了,那这个我保存一下,嗯,然后呢,这个就叫做have.job吧,嗯,来保存好,那我接下来需要将这个have.job呢和和谁呢?和这个我先找一下have.job有了,然后还得和这个student.circle,是不是他俩得放一起啊,他俩放一起啊,我打一个zip包zip,然后添加到desk pop.zip来保一个名字,改一个名字,嗯,手速太快了啊嗯,然后叫做这个have.z好,这个已经完毕,完毕之后呢,我把它上上传到那个相应的这个,呃。
08:20
项目里边啊,来来到这,我来到首页,然后创建,然后这个叫什么呢?叫做呃,Have吧,Hi,然后这个have,然后create create完之后呢,上传同样的套路啊have.zip来走诶没点上啊,然后点upload好已经上传完毕,上传完毕之后呢,我就直接执行了啊,我也不给他配邮箱,也不进行这个呃定时了,来走走好这个就开始跑了,呃,因为这回是不是又涉及到M码了呀,所以这个稍微的慢一些了,就啊咱等它完成,呃然后咱看一看这个日志啊呃,日志里边呢,你会发现这里边有这个艾若是吧,但其实这边并没有报错啊,这块并没有报错,并没报错,你看下边其实已经开始跑了啊,这有一个按钮叫refresh refresh你刷新刷新我们看哪啊,我们这个看后边,你看后边是不是就承认我跑交一个M。
09:20
发任务的时候他的那个日志啊,他这虽然报了L,但是其实并没有错误啊,并没有错误,行,我刷新来已经这个succeed了吧,已经跑完了啊,跑完了之后,那我怎么去检查我这个任务有没有跑完呢?是不是应该去我那个输出路径里边去看一下呀,LL这里边应该会出现一个student的文件夹吧,只有它呀,来CD到六来这个IL一下,然后cat一下这个零来走,哎,这个数据是不是已经出来了呀,好,没问题了啊好,那我们这块呢,我先录一段视频啊。
我来说两句