条件工作流功能允许用户自定义执行条件来决定是否运行某些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: jobAtype: commandconfig:command: echo "jobA 123"- name: jobBtype: commandconfig:command: echo "jobB 123"- name: jobCtype: commandconfig:command: echo "jobC 123"- name: jobDtype: commandconfig:command: echo "jobD 123 AA BB CC"dependsOn:- jobA- jobB- jobCcondition: all_success
3、打成zip包
[alex@hadoop102 jobs]$ zip base.zip base.flow base.project adding: base.flow (deflated 65%)adding: base.project (stored 0%)