条件工作流功能允许用户自定义执行条件来决定是否运行某些Job。
条件可以由当前Job的父 Job 输出的运行时参数构成,也可以使用预定义宏。
在这些条件下,用户可以在确定 Job执行逻辑时获得更大的灵活性,例如,只要父 Job 之一成功,就可以运行当前 Job。
Azkaban 中预置了几个特殊的判断条件,称为预定义宏。
预定义宏会根据所有父 Job 的完成情况进行判断,再决定是否执行。可用的预定义宏如下:
(1)all_success: 表示父 Job 全部成功才执行(默认)
(2)all_done:表示父 Job 全部完成才执行
(3)all_failed:表示父 Job 全部失败才执行
(4)one_success:表示父 Job 至少一个成功才执行
(5)one_failed:表示父 Job 至少一个失败才执行
1、base.project
[alex@hadoop102 azkaban]$ vim jobs/base.project
azkaban-flow-version: 2.0
2、base.flow
[alex@hadoop102 azkaban]$ vim jobs/base.flow
nodes:
- name: jobA
type: command
config:
command: echo "jobA 123"
- name: jobB
type: command
config:
command: echo "jobB 123"
- name: jobC
type: command
config:
command: echo "jobC 123"
- name: jobD
type: command
config:
command: echo "jobD 123 AA BB CC"
dependsOn:
- jobA
- jobB
- jobC
condition: all_success
3、打成zip包
[alex@hadoop102 jobs]$ zip base.zip base.flow base.project
adding: base.flow (deflated 65%)
adding: base.project (stored 0%)
网友评论