00:00
行了,同学们,那到目前为止呢,我们就已经完成了工作流的定义了,OK,好,那我现在要干啥?现在咱们是不是得去想办法去执行这个工作流啊,对吧,好了,那怎么去执行这个工作流呢?诶各位同学咱们来看一下啊,咱们首先你得先找到这个工作的定义,然后呢,执行的按钮后边有俩这俩哎注意观察这个是什么,这个是所谓的运行,那这个是什么呢?这个是所谓的定时,哎,这俩是啥意思,大家应该能想明白啊。运行指的就是OK是不是我这个工作流,我让他立即执行一次啊对吧,这叫运行啊OK好定时呢很简单,就是说你给他去配置一个定时规则对吧,让他在诶规定的时间对吧,去重复的运行能这就是运行和哎定时的一个,哎这个说明OK啊好但是啊这俩是不是咱们现在都点不了对吧,这个是为什么?是因为咱们当前这个工作流它的状态是下线的状态。诶,DS当中呢,实际上呢,是为我们的这个工作流啊,维护了一个上线下线的状态,OK好,那下线状态的工作流是不能运行的,哎,但是呢,你是能够编辑的。
01:14
能理解吧,你是能够编辑的,然后呢,诶上线状态的工作流,OK,你是不能编辑的,但是呢,你是能够运行的。是这样的,OK,好,那他这样去设计能有什么好处?很简单,他这么设计是不是能够避免一些,比如说我这个工作流现在正在运行,结果呢,有人上来之后把我这个工作的定义给改了,是不是能够避免这样的一些问题啊,对吧?哎,这个大家稍微的体会一下啊,好了,那在这儿呢,首先咱们需要干啥呢?你要想运行是不是得先上线呀,对吧,怎么上线很简单,这儿是不是有一个上线了吧,点一下上线就完事了啊好了,那现在工作流的状态就已经变成了上线了,对不对?那同时呢,你注意观察咱们这个按钮是不是发生了变化,后边这俩运行的能跑了,但是这个编辑的时候。跑不了了,点不了了对吧,好了,那现在咱们就可以开始运行了啊,那这块呢,前面讲过两种方式对吧,一个是运行一次,一个是定时运行,我们先来测一下这个运行一次怎么做啊,点一下吧,你直接点运行就行了啊,点完运行的时候注意观察。
02:11
这儿是不是需要我们去填一些这个必要的参数啊,对吧?好都有啥呢?咱们逐个看一下啊,首先第一个就是失败策略,诶,一个叫继续,一个叫结束,说实话这个东西啊,咱们看一眼之后直接就懵了,这啥意思啊,这是啊,OK,这个确实呃,不怪咱们啊,这个确实他这儿说的不清楚啊,但是他官网上说的很清楚啊,那现在我给大家解释一下这个所谓的室外策略是什么意思啊。是这样,咱们同学各位同学一起看一下,我们看一个这样的工作流,OK,假如说我现在这个工作流呢,有如下123,呃,咱这么写吧,写ABC吧,Abd啊,然后CD啊,然后后边来一个一,有如下这五个节点,五个任务啊组成的一个工作流,然后他们的依赖关系是这样的,好了,同学们,那咱们来思考一个问题,什么问题呢?比如说我这个任务现在要开始执行了,对吧?好,那你想想他们的执行顺序应该是什么样的,肯定是AB先跑对吧?
03:06
没错吧,好,那我现在问一下大家,你说如果啊,AB在运行的过程当中,比如说B这个任务他报错了。B这个任务他报错了,你说A还有没有必要继续往下运行?啊,A报错了,对,B报错了对吧,B报错了是不是就停了对吧,这边就停了,那你说A还有没有必要接着跑。哎,其实这时候我现在同学啊,可能会分为两派对吧,一部分同学认为OK,这个A应该接着跑。能理解吧,OK,还有一部分同学认为什么呢?A,现在也应该停止。对不对?OK,那可能每个同学都有自己的理解,都有自己的这个理由,对吧?那我给大家解释一下啊,OK,好,那我你认为A对吧,应该继续跑,你是怎么想的呢?他可能是这么想的,同学们,OK啊,好,你这个B挂了,那也不影响A运行啊,对吧?那我就A接着跑呗,对吧?OK,好,A跑完之后,我这个C是不是也不受影响,我也可以接着跑,对不对,我先把我能跑的都跑完。
04:05
对不对,当然大家肯定都知道,你这个C跑完之后再想跑E肯定是跑不了的,对吧,因为你B失败了,这个D就跑不了,D跑不了,E肯定没法跑了,对吧?当然也OK,好,但是呢,那同学可能会想到,诶,那我这能跑的,我先跑完对吧?那跑完之后你等你那边你修复完之后,咱们接着往下跑不得了吗?对,有同学肯定是这么想的,那当然可能还有另一部分同学这么想的啊,那反正我这个最后这个E也跑不了对吧,那我这边我跑半天有啥用呢。对不对,我倒不如说你等你把B修复好了之后,对吧,我再一块儿跑。那可可能同学有有同学是这么想对吧,诶所以说在这儿人家就给了咱们这样的两种同步,呃两种这个失败的策略能理解吧,OK,你点继续OK好,那如果出现这个B失败的情况,那A这边呢,就会接着往下跑,你点结束,那OK,那这个B失败之后,A就会停止。不是说白了,他的这个所谓的失败策略,咱们应该怎么去理解它呢?指代的就是啊当啊一个任务失败之后,那与之并行的任务应该怎么办?
05:08
对不对,是不是就是当这个任务失败之后,跟他并行的任务应该怎么办呀?对吧,你继续那就是继续跑,你失败了他就会啊,你结束呢,就会自己被KO掉,是这样的,这个大家理解一下啊好了,那我们继续往下进行,第二一个就是通知策略啊,所谓通知策略就是说你这块对吧,如果任务失败之后,你到底是干啥对吧?是有有这样的几种啊,一个是都不发对吧,你就是不管成功还是失败我都不发,还有一种呢是成功就发,还有一种呢是失败就发,还有一种呢是失败或成功都发。OK,我们现在其实还没有去配这个,呃,告警相关的内容对吧,所以这块呢,我们先都不发,后边咱们再讲这个怎么配啊。继续往下走,那这样呢,是不是咱们呃也能指定一个这个呃沃克分组啊对吧?那这边呢,我们呃,一般情况下呢,就跟工作流里边每个节点保持一致就行了,跟工作流里边每个节点保持一致就行了啊这个也要注意好继续往下走,下边这是不是也能选一个环境名称,这个呢,我们一般情况下呢,也是跟工作流里边保持一致就行了啊,是这样的啊好,那再往下走这块呢,是不是还能选告警组对吧?这个告警组还记得是什么吗?
06:13
告警组当中是不是能有多个告警实例对吧?每个告警实例我可以指定一种告警方式,对吧,指定一个收件人。没错啊,同学们,OK啊好了,那那这边是不是说白了,你这个告警组就是指定你的告警方式和告警对象啊,没错吧,那当然前提是啊,你这儿你得配了,比如说成成功或失败,头发这边我再配报告警组,那这个消息是不是才会发过来呀?对不对,OK啊,所以说这边它俩上下的是联动的,这个大家注意一下就行好了,那再往下最后一个就是补顺,呃,这个补税这块是什么意思呢?也给大家先简单的解释一下吧,所谓的补顺呢,实际上呢,是我们这个数仓啊,对吧,这个工作流调度当中比较常见的一个概念,啥意思,同学们想一想啊。就是我们数仓里边工作流正常情况下是怎么跑,是一天一天的跑,对吧,每天跑前一天的任务对吧,每一天跑一天前一天的数据,每天跑前一天的数据,正常是这么跑的,对吧?但是你有没有想过啊,有没有可能,比如说我某天的任务跑失败了,或者是或者是跑错了,我没有发现。
07:15
有没有可能有这种情况呢?其实说实话是有可能的。对不对,那出现这种情况之后,那怎么办呢?那你是不是你后来你发现了之后,就得补上前面的那个数据啊,对吧,能理解吧,OK好,也就是说前面的任务跑错误了,或者是跑失败了,对吧,然后我后边再去补,再去补对吧,那这这这个操作叫什么呢?叫做补数。那里吧,OK,好,那这个补数的时候呢,那你很有可能你会一下补多少天,你可能可能会一下补好多天,对吧,你比如说我这个任务它本身是有错误的,对吧?逻辑不对,但是呢,我过了五天我才发现这个逻辑是有错误的,那那你是不是这五天的数据都是错的呀,对吧?好你就可能会,诶一块儿去补五天的数据,好那怎么补呢?这块你可以看啊,咱们这儿是不是可以点一下这个补数啊,对吧?好补数的时候你可以选两种方式,一种是串行执行,一种是并行执行,好串行和值和并行这个是什么意思呢?很简单。
08:08
比如说举例子啊,下边我要补的数据呢,比如说是这个最近,比如说是这五天吧,啊OK,你可以选对吧,你就说24~28号对吧,比如说选择这五天。那吧,OK,那你点击一下这个,呃,确定对吧?OK,那你这就是一下能补五天的数据啊好了,那这五天的数据它执行的时候呢,两种方式,一个是串行,所谓串行怎么做呢?一天一天的跑。哎,跑完前一天再跑第二天,那并行呢,哎,就是这五天一块跑。能了解吧,哎,这就是串行和并行,那这个东西怎么选啊,怎么选,这是不是取决于咱们这个工作流的逻辑啊,对吧?能理解吧,同学们想你你稍微回忆一下啊,就是之前啊,咱们再去做,比如说DWS层的那种历史至今的汇总表的时候,那咱们的逻辑是什么样的,是不是每天利用他前一天的数据,再加上今天的数据,是不是是不是得到一个历史截止今天的结果呀?
09:02
那都之前咱都是这么做的,你想那对于这样的计算任务,他是不是每天的任务会依赖前一天的任务。能吧,所以这种情况下你就必须得选串行,那否则的话,如果前后没有依赖关系,你就能选并行了,那是不是肯定是并行跑得快呀,对吧?同学们把这个理解一下啊好了,那在这儿呢,咱们现在不是补数,那所以说我们把这个给它勾掉就行了啊,那继续往下走,那下边的这儿我们也能够去配置一些启动参数,这个呢,咱们暂时不传,不用管啊好了,最后一个就是是否空跑,所以空跑呢,就是说你点了之后,那他就啊不不去那啥不去做这个真正的执行,那那边只是会生成一条成功的工作实例,这个其实没啥用啊,这个咱们就不用点了啊好了各位,那到目前为止,那咱们这个启动前的参数就算是配好了啊,这里边需要咱们填的内容其实有啥呀。其实啥都不用填对吧,目前对吧,目前是不是啥都不用填对吧,将来可能要填的话,有一个通知策略可得填一下对吧?诶告警组可能填一下别的,其实一般情况下咱们就用默认值就行,就不用管了啊好了,那现在咱们啥都不填啊,完了之后呢,点击运行好你看啊,当我点完运行之后,这是不是提示成功了对吧?OK,这个时候呢,那哪注意观察工作流实力里边是不是理论上会出来一条。
10:16
没错吧,同学们,OK,好,那你会发现这个任务因为比较简单,它直接就运行完成了,对吧?你比如现在呢,我想看一看咱们当前这个工作流对不对,那它到底执行到什么,执行到哪块了,对吧?但是这个很快已经完事了,假如它比较慢,对吧?我想看一看进度,这个怎么看,很简单啊,找到实力对吧,你就点一下它就行了,点点完之后你看是不是就会来到这样的一个工作流实例的一个界面呀,对吧?OK,你注意观察上边这块,其实表示的是这个节点的运行状态。如果是这个绿色的对勾,表明运行成功了,对吧?如果是一个蓝色的齿轮,然后呢,一直转圈对吧?好,那这就是正在运行啊,如果这块呢,是一个这种小叉子,说明他失败了啊对吧?大家这个呢,应该是能够看明白的啊,我们这因为任务太简单了,所以瞬间就完成了,对吧?诶这是诶工作流实力的一个查看好了,那比如说我现在呢,想去看一下对吧,你这个呃,每一个这个节点对不对,那它的一个执行的情况对吧?假如说举个例子啊,比如说他报错了,他报错了我想去看一看他报错的日志是什么,这个去哪看同学们是不是得去看任务实例啊对吧,你看任务实例是不是出现了三个。
11:25
没错吧,好了,你比如说B报错了,那我就得找这对吧,那去哪看他的日志呢,往后走。诶,这是不是有一个按钮啊,对吧,这儿就是查看日志的按钮啊来咱们点一下,点完之后你会发现此处呢,咱们是不是就能够看到这个任务它输出的日志啊,对吧?注意观察,你看这这是不是有一个bbb对不对,这就是我们这个任务打印的嘛,对不对?好了,同学们,那这就是如何查看我们这个任务实例的日志,就是这么看好了啊,那截止到现在各位啊,咱们就已经知道怎么去定义一个工作流了,也知道如何去运行一个工作流了。啊,这样的,包括咱们去查看这个工作流的日志啊等等,咱们是不是也都会看了,对吧,咱们查看工作的,呃,工作流的这个进度咱们也会看了,对不对,好了,那这些内容大家是需要掌握的,好,那其实我们还有一个重要的工作没做啊,什么工作。
12:14
就是定时啊,我们现在只是会哎执行一次了,对吧,但是我们正常情况下是不是得定时对吧,怎么定时是不是得用这个呀,对吧,好了,那它到底怎么配,哎,这个下节课再说啊,咱们先休息会儿吧,各位好吧,呃,休息15分钟那一会儿呢,我们是四点上课,好吧,四点上课啊。
我来说两句