00:00
嗯,好了各位啊,那咱接下来要做,或者要接下来要学的内容呢,就是这个所谓的呃,一些这个进阶的小技巧,那简单的先看一看这里边儿都有啥,一共有四小节,第一小节就是工作流传参。诶,那咱们这个工作流同学们啊,指的是我们每天定时调度的工作流对吧?那我们正常情况下呢,都可能会给他去传餐啊同学们,咱们稍微的回忆一下啊,你比如说就以我们将来要调的这个数仓的工作流为例,对吧?其实说白了咱们将来这个数仓要调的工作流就是什么,由什么组成,说白了就是由咱们之前创建的是不是每一层的这个脚本组成啊,对吧,是不是就这些脚本对吧?那我们每个脚本是不是都可能需要传参。对不对,你比如说这个脚本,他是不是可能需要传两个参数对吧,一个是表明,一个是日期。能理解吧,等OK,那怎么去给这些呃,这个脚本去传参呢,对吧?诶,OK好,那这是我们接下来要学的内容对吧?也就是我们很多工作流呢,它都是需要用到这个传参的功能的,所以说DS这边呢,就给咱们诶提供了这样的一些非常灵活的传参的这个功能,诶非常的灵活啊,OK好,那接下来呢,诶咱们一会儿就去学一下这个工作流怎么传参,好那再往下还有一个就是如何引用依赖资源。
01:17
诶,其实前面提到过东西吗?就是DS是不是给咱们提供了一个所谓的资源中心啊,对吧,里边是不是可以存放一些我们这个任务所依赖的资源,对吧?依赖的炸包,依赖的脚本,对吧?那我怎么用它呢?对不对,那一会儿演示一下给大家啊,好,那再往下还有什么,诶就是关于这个告警怎么去做了,对吧?诶告警是工作流调度当中非常重要的一项工作,所以说这个咱们也得会啊,那一会儿再演示,最后一个就是工作流失败重考。啊,前面讲过工作流在执行的过程当中,可能并不是那么的顺利,对吧?他跑到一半可能失败对吧?失败之后咱们怎样去解决问题,怎样让它恢复对吧?这是呃,我们在最后一小节需要学的内容,好了,一共这样的四节,咱们逐个来看啊先看第一个工作流传参。
02:03
首先那我们需要先搞清楚一个概念,什么概念呢?就是呃,Dolphin sc当中的这个工作流传参的方式。DOPHIN2当中呢,工作流传三的方式啊,可以说一共有这样的三种吧,哪三种呢啊,第一种就是本地参数啊,第二种呢,就是所谓的全局参数。那还有一种是什么呢?就是我们下边要讲的就是一个什么呢?诶,由上游传递过来的参数,诶可以说有这样的三种,好了,OK啊好,那咱们接下来呢,就把这三种呢都给它去说一下啊,咱们先来看前面两个,诶这两个呢,可以放在一小类里边,咱们对比一下啊,一个呢叫做本地参数,一个叫做全局参数,好,什么叫本地,什么叫全局呢?来我们先把这俩概念搞清楚啊,其实特简单啊特简单,先看第一个,哎,本地参数,什么叫本地。本地参数是指只针对单个任务节点有效的参数。
03:03
能理解吧,哎,任务节点啊,这个概念,特殊的概念,任务对吧?任务啊,OK,是指工作流里边的一个任务对吧?哎,对单个任务有效的参数,那咱们叫本地参数,好,继续往下走,那什么叫做全局参数呢?诶很简单,全局参数指的就是针对整个工作流里边的所有任务节点都有效的参数,这就是所谓的全局参数嘛,哎,其实非常简单啊,好,那接下来我就给大家去演示一下,我们怎样去做这个所谓的公这个本地参数的传递和这个全局参数的这个传递,好接下来给大家演示一下。OK,这边呢,咱们就这样啊,我们找到之前这个追帽工作这个项目,对吧,找到之前这个hello word的工作流定义,咱们就以它为例啊,来给大家去说一下,那我们到底怎样去给这个工作流传参,好,那现在呢,我们呃,要想给他传参是需要去编辑一下这个工作流的啊,所以说需要先干什么,得先下线吧,对吧,先给它下线,下线之后呢,我们现在呢,去点一下这个呃工作流,或者说你直接点这个编辑按钮也行,你点它也行啊,这个都可以进到这个编辑页,都可以进到这个编辑界面啊,是一样的。好了,那接下来呢,咱们就来看一看到底怎么去进行这个所谓的传参,咱们先这样,各位啊。
04:13
先来,呃,演示一下这个所谓的本地参数啊,先演示一下这个本地参数啊,OK,那怎么穿本地参数很简单,刚才说了针对一个节点有效的参数是不是就是本地参数了,对吧?就是这个节点的本地参数嘛,对吧?好,往下走怎么转,就在这传嘛,这是不是能够传单对吧?你就点一下就行了,点点完之后呢,在这儿你就可以给当前的这个诶任务节点传参了,OK,好,比如说举个例子啊,那在这儿呢,我想给这个脚本传一个日期参数,对吧?因为咱们很多脚本是不是需要接收日期参数啊,对吧?比如说我需要给他传一个,那怎么传呢?在这儿呢?嗯,首先你需要在这儿填一个这个字段,这个参数的参数名,对吧?能理解吧,比如说在这咱们就叫DT好了,那完了之后呢,注意观察,第二部分咱们要传一个什么in或者是out。
05:03
诶,这个in和out是什么意思呢?给大家解释一下啊,In指代的是给当前这个节点传参。能理解吧,OK,好,Out是什么意思呢?注意,Out是给我们当前节点的下游的节点传参,这叫out。那有什么意思啊,你就在这儿,如果我传in的话,好,那这个参数会传给node a对吧?那如果我写out的话呢,它会传给谁,会传给node c。能理解吧,OK,好,那你给下游节点传参这个能有什么用的,其实有些场景下是有用的,比如说举个例子啊,假如说我这个node c对吧,我需要根据node a的结果对不对去进行判断。能理解吧,然后呢,再决定我到底要执行什么样的任务,能这种情况下是不是你这个A节点给C节点,这个下游传参这个功能就会非常有用啊。
06:00
能理解吧,啊是这样的啊好了,那接下来呢,我们先不去管这个上下游怎么传的啊,咱们先呃搞定,就是给自己这个节点传它怎么传啊,那继续往下走,那接着接着传这个参数啊,那参数名DT对吧?那这块咱们要给当前界,那是不是得传in呀,对吧?你不要选outt了,然后往下走,后边是什么呢?是你这个参数的类型对吧?你可以选,比如说字符串类型对吧,然后再往下,哎,这就那个值了对吧,比如说我给他传一个什么值了,在这咱们先传一个固定的值啊,比如说就是2020杠零六杠幺四对吧,你就随便先传一个日期。好了,那日期是不是就已经传完了,对吧,传完之后,那你想一想,我这个脚本里边是不是就可以引用这个参数了,关键问题来了,怎么引用啊。对不对,我给你传了,你怎么用的呀,很简单,就用这种Dollar花括号花括号的方式去引用就可以了啊Dollar然后呢,后边跟一个画括号里边呢,咱们给它放上你这个参数屏就OK了,对吧,就是E,然后呢Dollar dt就能够引用你给他传的参数了。行了,同学们啊,当然同学,这时候有同学可能会会会会有疑问啊,说你这个传参你这么传,你这不瞎折腾的吗?你这有意义吗?你直接把这个日期对吧,直接CTRLC我拿过来对不对?我给它放在哪,我放在这不完事了吗?
07:12
对不对,你为什么非非得还从下边给他传一下呢,对吧,OK,那同学们,你你这么想去吃对的。确实咱们现在这种写法啊,我这给他传一个固定值的参数,这个确实没什么意义,说实话没啥用,能理解吧,OK啊,跟你直接在这写死没有任何区别。能理解吧,OK哈,那正常情况下呢,我们给这个任务传参,我们这肯定不是传一个固定的参数,咱们传参通常是传什么呢?是传一个那种动态的参数。那另外OK,大家都知道,你比如说我们将来这儿了,要调的就是我们数仓里边的那个脚本,那那大家都知道咱们那个脚本是不是正常需要接收俩参数对吧?第一个参数是一个哦,第二个参数是不是一个日期啊对吧?好,那理论上同学们那个日期,那咱们应该怎么传,我们前面讲过,如果那个我们是测试对吧,某一天好,你可以给他传一个具体的日期啊但但是呢。
08:09
呃,但但是如果说我现在呢,我是需要进行每日定时调度了,那我们理论上第二个参数日期是不是应该不传呀,对吧,你要不传的话,那是不是在我们的脚本当中能干啥,能自己计算前一天的日期啊,那么正常情况下,我们这个定时调度的时候,第二个参数应该是不传的。啊,但是其实啊,如果我们用的这个调度工具是doin scer OK,好,第二个参数咱们也能传,能给他传一个什么呢?能传一个do分SC当中提供的一个动态参数。诶,这个动态参数怎么传呢?后边会解释啊,而在这儿呢,比如说给他传上一个动态参数,你能不能实现这样的一个功能,什么功能呢?就是每天对吧,到点了去执行这个工作流的时候,那他给你传的这个参数呢,都是不一样的,能够去通过一些规则对吧,去指定,比如说每天都给我传一个前一天的日期。
09:01
能,它能实现这样的一个效果啊,能理解吧,也就是将来咱们真正这么传参啊,这传的是动态的值,好,那动态值怎么传啊,咱们后边再说,现在呢,咱们先搞清楚啊,就是这个所谓的本地参数和这个什么全局参数来吧,这些东西怎么玩,咱们先把这些基础的概念搞清楚,再去说这个动态的值怎么传啊,后边再说啊,行了,那现在咱们就先以这个静态的值为例,给他演示一下这个传参的功能啊,行了,完事之后呢,我们点击确认添加。行完成之后呢,点击保存对吧,然后呢,这边点击添加好了,那现在咱们这个传参的这个配置是不是就已经配完了呀,对吧?接下来咱们做一个测试啊,比如说我点上线,然后呢,点击运行对吧?点运行稍微等一会儿,等一会儿之后,理论上各位啊,那咱们那个A节点对不对,它打印的日志当中输出的应该是什么,是不是应该就是那个日期了呀,对吧?来咱们看一下是不是啊,这是新的这个A节点的任务实力往后翻找到日志。之后呢,我们给它全屏往下翻,注意观察。这是不是就打印出来,刚刚我们给他传的那个2020-0114了,没错吧,各位OK,好,那这个其实非常简单的,这就是所谓的什么。
10:08
本地参数能理解吧,OK,那你比如举例子啊,我现在假如说再给他下线对不对,下线之后假如说啊,你比如说我在B节点,我也让他去打印一个什么Dollar dt。能理解吧,你说他这能打印出来吗?那显然是不行,那就因为你刚刚在A节点传的参数只对A节点有效吗?对吧?就这个意思啊,好了,这就是所谓的本地参数,那接下来我们再看第二一个概念叫做全局参数,全局参数怎么传呢?就是针对整个工作流传,其实很简单,怎么传啊,很简单,比如这样,同学们啊,呃,咱们现在呢,让每一个节点都去引用一个这个DT啊,都引用一个DT,注意啊,那我这个B节点,我这是不是没有传参数,对吧,我也让打印DT啊,啊确认C节点也是一样的,咱们不给他转本地,也让他打印一个DT好了,好,那现在呢,我们点击一下这个保存,注意点击保存的时候在这儿注意这儿是不是能设计是全局啊,对吧,这个全局指的就是全局参数对吧?在这儿呢,你可以给他传一个DT,比如说在这儿呢,我给他一个2020杠零六杠幺几幺五。
11:10
回头好了,注意观察啊,现在呢,我们点击一下这个添加。好,点击添加去之后呢,我们呃,是不是就已经将这个工作流保存完毕了,对吧?保存完毕之后,注意我们现在呢,再给它上线,上线之后呢,我们再给它运行,然后点击运行好了,同学们你稍微等一会儿啊,哎,等这个工作流实例这个呃,运行完之后,咱们去看一下效果,已经运行完了,对吧,已经完事了对吧?好,那现在咱们去找到任务实力,再看一下这三个节点的输出,比如说我们先看C节点啊,注意观察你看。他下边有没有打印出来那个日期。出来了对吧,这是不是就引用到了这个所谓的全局参数了,对吧,0615啊没问题,继续往下走,第二一个找NOEA啊no a点诶点完之后你注意观察,你看这边变成啥了,是不是变成了幺四了呀。没错吧,OK,那这个也搞定,再继续往下走,那再往下再往下开始该这个note b了,对吧,那再点一下这个日志,诶你注意观察。
12:04
诶,这个是不是也是幺五对吧,好了,至少同学们啊,我们现在这个全局参数是不是已经生效了,对吧?但是这里边好像有点奇怪,哪奇怪呢,就是A节点。对吧,为什么别的节点我这儿接收到的参数都是15号,而A节点这边是什么?是14号啊,对吧?这是为什么呀?诶这个很简单,这个大家应该还记得,对吧?我们在A节点当中,我们把这个再下线啊,我们在A节点当中,对吧,是不是给他传了一个本地参数啊,对吧,你会发现那这俩参数的值,这这俩参数的参数名是不是撞上了对吧?都叫DT。能理解吧,那完了之后,这时候是不是得涉及到一个什么问题呢?一个优先级的问题吧,能理解吧,那它到底是取这个本地参数的值,还是取全局参数的值呢?从刚才咱们这个现象就能看出来,它取的是谁,它取的是本地参数吧,能解吧,也就是说,当哎,我们这个本地和全局对不对,里边都有一个同样的这个参数的时候,对吧,那我在这儿引用的时候呢,谁的优先级高呢?是不是本地参数的优先级高?
13:09
对吧,各位同学这个大家一定要注意一下啊,好了,那这就是全局参数和本地参数的这个概念,诶咱们就说完了啊,来完了之后视频我停一下啊。
我来说两句