Azkaban 中 条件工作流案例

本文介绍了Azkaban工作流系统中如何使用条件工作流功能,允许用户自定义执行条件来决定Job的运行。通过运行时参数和预定义宏,可以实现更灵活的Job执行逻辑。例如,条件工作流可以设置为只有在特定日子或父Job至少一个成功时才运行。文中提供了详细的案例,包括JobA和JobB按日期执行,以及JobC在JobA和JobB中至少一个成功时执行的配置示例。
摘要由CSDN通过智能技术生成

条件工作流功能允许用户自定义执行条件来决定是否运行某些Job。条件可以由当前Job的父 Job 输出的运行时参数构成,也可以使用预定义宏。在这些条件下,用户可以在确定 Job执行逻辑时获得更大的灵活性,例如,只要父 Job 之一成功,就可以运行当前 Job。

运行时参数案例

1)基本原理
(1)父 Job 将参数写入 JOB_OUTPUT_PROP_FILE 环境变量所指向的文件
(2)子 Job 使用 ${jobName:param}来获取父 Job 输出的参数并定义执行条件

2)支持的条件运算符:
(1)== 等于
(2)!= 不等于
(3)> 大于
(4)>= 大于等于
(5)< 小于
(6)<= 小于等于
(7)&& 与
(8)|| 或
(9)! 非

3)案例:
需求:
JobA 执行一个 shell 脚本。
JobB 执行一个 shell 脚本,但 JobB 不需要每天都执行,而只需要每个周一执行。

(1)新建 JobA.sh

#!/bin/bash
echo "do JobA"
wk=`date +%w`
echo "{\"wk\":$wk}" > $JOB_OUTPUT_PROP_FILE

(2)新建 JobB.sh

#!/bin/bash
echo "do JobB"

(3)新建 condition.flow

nodes:
- name: JobA
 type: command
 config:
 command: sh JobA.sh
- name: JobB
 type: command
 dependsOn:
 - JobA
 config:
 command: sh JobB.sh
 condition: ${JobA:wk} == 1

(4)将 JobA.sh、JobB.sh、condition.flow 和 azkaban.project 打包成 condition.zip
(5)创建 condition 项目=>上传 condition.zip 文件=>执行作业=>观察结果

在这里插入图片描述

(6)按照我们设定的条件,JobB 会根据当日日期决定是否执行。

预定义宏案例

Azkaban 中预置了几个特殊的判断条件,称为预定义宏。
预定义宏会根据所有父 Job 的完成情况进行判断,再决定是否执行。可用的预定义宏如下:
(1)all_success: 表示父 Job 全部成功才执行(默认)
(2)all_done:表示父 Job 全部完成才执行
(3)all_failed:表示父 Job 全部失败才执行
(4)one_success:表示父 Job 至少一个成功才执行
(5)one_failed:表示父 Job 至少一个失败才执行

1)案例
需求:
JobA 执行一个 shell 脚本
JobB 执行一个 shell 脚本
JobC 执行一个 shell 脚本,要求 JobA、JobB 中有一个成功即可执行

(1)新建 JobA.sh

#!/bin/bash
echo "do JobA"

(2)新建 JobC.sh

#!/bin/bash
echo "do JobC"

(3)新建 macro.flow

nodes:
- name: JobA
 type: command
 config:
 command: sh JobA.sh
- name: JobB
 type: command
 config:
 command: sh JobB.sh
- name: JobC
 type: command
 dependsOn:
 - JobA
 - JobB
 config:
 command: sh JobC.sh
 condition: one_success

(4)JobA.sh、JobC.sh、macro.flow、azkaban.project 文件,打包成 macro.zip。
注意:没有 JobB.sh。
(5)创建 macro 项目=》上传 macro.zip 文件=》执行作业=》观察结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值