00:00
好,呃,那现在咱们数据既然已经准备好了,呃,那接下来其实咱们集群上边啊,就不再需不再需要这个我们的卡夫卡和这个了,所以咱把它关掉,因为一会儿啊,我们使用@卡门去调度整个流程的时候呢,呃,需要的资源比较多,那所以咱们把这个没用的东西呢,全部停掉。F1停掉。然后呢,咱们把这个呃,卡不卡也给他停掉。把没用东西咱们先停掉啊卡夫卡呃,K f sh stop你也停掉,行,那现在呢,我们去嗯做我们下一步啊,就是说去描述咱们这个呃工作流程,那鲁这个阿斯卡班的工作流程呢,我们在呃今天上午呃已经从头到尾呢,给大家已经这个呃规划完了,已经规划完了啊那这个,那现在呢,我们要做的事其实就是去呃把这些东西咱们使用阿兹卡班去给他描述出来,怎么去把这个工作流程描述出来,那描述它的时候呢,我们每一个小块啊,就是每一个我们都是一个怎么样都对应一个job文件。
01:01
对不对,咱每个job文件呢,我是不是对应一个脚本啊,对应个脚本,然后呢,使用那个dependence这个属性,把它们之间的依赖关系给它表示出来,那就能够自动生成一个这样的工作流程图了,是这样的啊,那这样啊,就是按照常理来说,咱们这边呢,肯定是需要把所有的这个呃东西全部使用@卡去调度的,但这边呢,呃,因为我前面说了,因为这个确实工作量比较大,比较大,也是从头到尾,如果同学那个电脑慢的话呢,可能这个跑完需要一个一个小时,甚至还要更长的时间。所这边呢,咱们,呃,尽可能的咱们精简一下这个东西啊,咱们给它精简一下,咱把哪精简掉呢。把这个位置定剪掉这儿啊,大家看这个位置。Ods to dwd,然后base log,然后还有一个什么呀,还有ods to dwd event log,就是对于事件日志的解析,对于事置事件日志的解析啊,那这个东西我们实际上就是后边呢,其实没有用到这个事件日志,就后边我们做这些需求的时候,根本就没用到它。
02:00
既然是这样的话,那我们这儿呢,就给它去掉吧,咱们就不跑它了,就目的就是为了让这个我们这个任务跑的时候更快一些,没有其他的这个目的啊,就让它更快一些,好,那我把这个去掉,这个就不要了,这个不要了,那这会不要,那也就是咱现在这个,呃,工作流程呢,应该就是这样的一个状态,就是这样的啊,那OK,那咱们就照着这个东西呢,去写一下咱们这个工作,呃,流程的配置文件也是那个所谓的点招文件,那点照文件呢,其实我已经在这个文档上边呢,给大家全部都写好了,而且这个照文件呢,你连复制粘贴都不用了,呃,当然前提是什么呢?前提是诶你的这个所有的脚本的名字啊,得跟我这个文档上一样才行。如果都一样,包括路径啊都一样,如果都一样的话呢,那你直接把这个这包你给他下载复制一下就行,呃,也就是说你不用再去复制粘贴了,是这样的啊,那我们现在,呃,当然一会咱们也不用去创建文件了,一会用它,但是我们现在也得来看一看这个文件,咱们应该怎么去写,这个文件怎么去写啊,OK,那这边的依赖关系呢,我们是已经已经都都捋清楚了,对不对,那我们现在来逐一的去看一看,这里边咱们的配置文件是怎么去写的啊,咱们以谁为例呢?以它为例。
03:10
以这个为例,这什么?这是呃日志的吧,这是日志,把日志从这个HDFS上那个路径上边,也就是咱们那个origin date从那个路径下边给它导入到咱们的ods层的表里,对不对?这是这个任务,那我们看看它的这个job文件是怎么去写的,来两行啊,这两行一个是呃,类型type等于什么?呃,那阿兹卡班内置的工作类型呢?一共有两种,一个是command,一个是Java process,对吧,一共这两种。当然你也可以配置其他的插件,比如说配置have类型的任务,配置什么呀,配置海杜普的MR任务,其实这个是可以通过插件去配置的,阿卡是支持这个插件功能的啊,是这样的,那这边我们其实不配那些插件功能其实也行,为什么呢?因为一个可望的我是不是几乎能干所有的事啊。一个command的,我让他去调你脚本,那脚本里我是不是调have,调海度是不是都可以啊,是这样的啊,那所以所以这边呢,咱们用一个呃command类型去做我们的工作,好,那command这边呢,咱们就指向诶你对应的那个是不是那个脚本就可以了呀,那脚本这边大家要注意了,我使用这个脚本的时候,咱们要传参的。
04:20
咱们要传参的,那这边这个名字叫做my to hts是这样的啊,那这也就是说,呃,是咱们那个S库导数据的任务,那S导数据的任务我们是要传参的,我们传参有哪些参呢?有俩参。第一个第一个参数呢,呃,是传这个表名,是传表名啊,也就是咱们这如果说我传一个表名,那传哪个表名,那我就导哪个表,对吧,当然还可以传一个什么,还可传一个first。First呢,是初次导入诶使用的一个参数,那还有一个all,那all是什么呢?All是后续每次导入应该传输参数,因为初次导入跟以后每天重复导入的这个数据呢,可能有点区别,为什么呢?比如说咱们那个地区表跟那个省份表,我那个表是不是特殊维度啊,特殊维度指导一次就够了,后续就不用再导了,所以说初次跟后边每次每天重复的这个脚本呢有点区别,所以在那有一个这样的参数,那咱们现在已经是后边是不是已经不是初次导入了呀,所以说咱们传哦,那后边呢,还有一个点,还一个日期。
05:19
那这个日期呢,我们应该怎么去处理呢?呃,前面来给大家讲过啊,那咱们那个脚本当中的日期是是是怎么个怎么个使用逻辑来着,是这样的,如果说你这个第二个参数,你那个导数据的日期如果不传不传,那脚本当中我们是不是默认会给它置为前一天的日期啊,就是置为昨天的日期,那我们数仓这个任务交给阿兹卡班去调度,按照常理来说,是不是他就应该是让他自动去获取前一天的日期啊。就应该自动获取前一天日期,确实是这样的,这个没错啊,那其实也就是说你要交给阿斯卡片调度,那其实这个日期咱们这是不是不传也行是。传也行,不传也行啊,但是这边呢,我们既然这个脚本呢,我们诶有这个日期的参数对不对,那有日期参数,我我可以怎么做呀,我可以想导哪天的数据,我就导哪天的数据,那当然呃这个我们之所以给那个日期,咱们做了一个这样的一个可配置,这是为什么呢?诶一是为了我们在这个教学环境下边我们去,呃,就是说因为咱们教学环境下不可能让他去导前一天的数据,这个不太好,不太好做,对不对啊,那所以说我们给他呃可以传一个日期,那我传哪个日期就导哪天的数据,这是我们在教学,其实啊,在生产环境下,我们这个脚本它其实也应该这么去写。
06:33
就是说你也应该把那个日期做成这种可配置的形式,就是说诶,你想让他传哪天就传哪天,或者是你不给他传日期,那就就跑前一天其实也应该做成这种,这是为什么呢?因为咱们在生产玩家呀,那这个数据啊,我们其实交给阿兹卡班去自动导的时候呢,有可能会出现某天的数据它导失败的这种现象。就各种情况吧,比如说这个资源不够了,或者这个集群出问题了,是不是就有可能导致你某一天的数据没导成功啊,没导成功,那你后续你发现这一些数据出问题了,那你需要干什么,你是不是也需要去把那一天的那个任务再重新执行一遍啊,也就是说在生产之下呢,我们也有这样的场景,就是说让他去跑某一天的这个任务。
07:16
让他去跑某一天的任务,也有这样的场景啊,那所以说在这的我们把这个日期也传给他了,也传给他了,那这个传日期的时候,你在这个job文件当中,你肯定不能把日期写死吧,对不对,肯定不能写,那最好是怎么样呢?最好是我可以在阿兹卡班的web页面上,我给他传三,那我比如说传一个DT等于这个,呃12号,那我阿里卡密就导12号的数据,如果说我不传,那就前一天,那最好是能够这样。对不对,那阿兹卡们有没有这种功能,也就是在页面上能不能传参呢?是可以传参的,可以传三啊,然后你在页面上传完参之后,Job文件当中怎么引用你页面上那个参数呢?就通过这种方式去引用就行。Dollar do date到一个Dollar啊,里边写一个这个参数名就行,那类似于咱们那个EL表达式,类似于表达式啊,就是Dollar,然后里边呢,加一个参数名,参数名那一会儿我们在页面上呢,诶就可以传一个这样的参数,传进来之后,那这个脚本呢,就能够拿到这个参数了。
08:16
是这样的啊,这是咱们去处理这个,诶日期的这个方法,诶在这这么去引用,好,那这是我们的第一个脚本啊,那第二脚本这是从哪,这是从买思科到HTS对不对,那后边呢,改HTFS到ods了,这是导的是谁导的是日志对不对,那它往下走。是不是也是这么去传这个日期啊,也这么传日期,那下边这些东西呢,都是同样的,都是同样的啊,都这么传,当然不同的脚本,我应该传什么参数,这个大家自己得心里得清楚才行啊,你得清楚才行。好,那这边咱们就不再一个一个的说了啊,因为这里边就是说每个脚本怎么用,大家之前都用过,应该都都都清楚,然后我想说的是什么呢?呃,我想说的这个依赖关系的事,这个依赖关系啊,那这个依赖关系你怎么去捋,你按照我们刚才这个图,咱是不是已经把这里边的依赖关系都捋清楚了呀,那捋清楚之后呢,你就照着这个去做就行了,这里边唯一比较特殊一点的是谁呢?特殊一点是他。
09:12
DWD到DWSDWD到DWS啊,那这边咱应该怎么去做呢?诶大家要注意了,得这么做才行啊,这么做就是说它实际上依赖的是几个呀,他依赖是俩,一个是他,一个是他。对不对,那所以说这边DWD到DWS,你的底depend的应该怎么写,往下看DWD到dws d depend是不是得写两个呀,一个是哎ods到DWD,这是谁啊,指那个业务数据,还有一个谁还是那个日志的,那日志我们现在只保留了一个启动啊,我们把事件给它去掉了,所以咱就不用考考虑事件了,那大家要注意这两个这个之间呢,是什么?是以逗号分割的,是以逗号分割的啊是这样的,好,这是咱这边要说的这个事。那好了,那这个所有的job文件呢,其实都在这列好了,这个大家不用自己去写了,然后我这边呢,就直接把这个job文件呢,呃,把这个zip包我就给它拿出来就行了啊来CTRLC一下,呃,那接下来呢,给它复制到我的桌面上。
10:10
瑞。好,咱们节省时间啊,节省时间好了,那这个完事之后呢,我们相当于这个job的描述文件,咱们就已经那个完事了啊,然后把视频录一下。
我来说两句