Azkaban Condition Flow (条件工作流) 使用简介
本文上接《Azkaban Flow 2.0 使用简介》,对Azkaban Condition Flow (条件工作流) 做简单介绍
目录
条件工作流 介绍
作用
条件工作流,允许用户根据条件指定是否运行某些作业
使用方式
- 用户可以根据运行时参数(如先前作业的输出)运行或禁用某些作业
- Azkaban提供了一些预定义的宏,用户可以直接使用,用于比较父作业的运行状态来运行或禁用某些作业
支持的运算符
| 运算符 | 含义 |
|---|---|
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| && | 与 |
| || | 或 |
| ! | 非 |
作业运行时参数的条件:
- 使用 ${jobName:param} 来定义作业运行时参数的条件
- “:” 用于分隔jobName和参数
- job运行时,使用参数与条件中的字符串或数字进行比较
- 用户需要事先将参数的值写入 $JOB_OUTPUT_PROP_FILE
支持的预定义宏
| 预定义宏 | 含义 |
|---|---|
| all_success | 默认值,所有父job全部成功 |
| all_done | 所有父job全部完成 |
| all_failed | 所有父job全部失败 |
| one_success | 至少有一个父job成功 |
| one_failed | 至少有一个父job失败 |
每个预定义宏的相应作业状态:
| 预定义宏 | 作业状态 |
|---|---|
| all_done | FAILED, KILLED, SUCCEEDED, SKIPPED, FAILED_SUCCEEDED, CANCELLED |
| all_success / one_success | SUCCEEDED, SKIPPED, FAILED_SUCCEEDED |
| all_failed / one_failed | FAILED, KILLED, CANCELLED |
一些有效的条件 举例
${JobA:param1} == 1 && ${JobB:param2} > 5
one_success
all_done && ${JobC:param3} != "foo"
(!{JobD:param4} || !{JobE:parm5}) && all_success || ${JobF:parm6} == "bar"
条件工作流 实例
- 新建两个文件:flow20.project 和 .flow 为扩展名的文件
- 打包zip & 上传zip & 运行
详细过程略(可参见上一篇博文中的“简单的Flow”一节),.flow 文件举例:
# 文件名:condition_2flow.flow
nodes:
- name: JobA
type: command
config:
command: sh /azkaban/job/write_to_props.sh
- name: JobB
type: command
dependsOn:
- JobA
config:
command: echo "This is JobB."
condition: ${JobA:param1} == "AAA"
- name: JobC
type: command
dependsOn:
- JobA
config:
command: echo "This is JobC."
condition: ${JobA:param1} == "BBB"
- name: JobD
type: command
dependsOn:
- JobB
- JobC
config:
command: echo "This is JobD."
condition: one_success
/azkaban/job/write_to_props.sh 文件的内容:
echo '{"param1":"1"}' > $JOB_OUTPUT_PROP_FILE
Condition Flow在web页面中的显示是如下图的样子

- 实例中“JobC”的condition不成立,所以不会执行
- “JobD”的condition是只要“JobB”和“JobC”有一个成功即可执行
所有上述实例最终的执行结果为:“JobC”不执行,其他均执行成功。如下图:

附录
官方文档
https://azkaban.readthedocs.io/en/latest/conditionalFlow.html#
例子源码
https://github.com/remainsu/azkaban_job
Azkaban Condition Flow (条件工作流) 使用简介的更多相关文章
- Azkaban Flow 2.0 使用简介
官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用 目录 目录 一.简单的Flow 1. 新建 flow20.project 文件 2. 新建 .flow 文件 3. ...
- 工作流调度器azkaban(以及各种工作流调度器比对)
1:工作流调度系统的作用: (1):一个完整的数据分析系统通常都是由大量任务单元组成:比如,shell脚本程序,java程序,mapreduce程序.hive脚本等:(2):各任务单元之间存在时间先后 ...
- Activiti工作流引擎简介
Activiti工作流引擎简介 一.概述 Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活 ...
- python笔记11-多线程之Condition(条件变量)
前言 当小伙伴a在往火锅里面添加鱼丸,这个就是生产者行为:另外一个小伙伴b在吃掉鱼丸就是消费者行为.当火锅里面鱼丸达到一定数量加满后b才能吃,这就是一种条件判断了. 这就是本篇要讲的Condition ...
- 工作流--JBPM简介及开发环境搭建
一. 工作流简介 项目中不断的接触工作流,点点滴滴积累了一些,下面把一些学习到的东西整理记录下来. 工作流一般的适用场景:公文流转.行政审批.订单处理.产品研发.制造过程等.用专业一点的语言来描述工作 ...
- activiti工作流框架简介
常见的工作流框架:activiti, JBPM, OSWorkflow activiti框架基于23张基础的表数据, 基于Mybatis操作数据库. JBPM框架基于18张基础的表数据, 基于hibe ...
- Java代码实现对Azkaban的Flow进行设置定时
代码如下: public class CurlToAzkaban{ public static void scheduleExecute(String flow, String cronExpress ...
- python多线程之Condition(条件变量)
#!/usr/bin/env python # -*- coding: utf-8 -*- from threading import Thread, Condition import time it ...
- 条件随机场CRF简介
http://blog.csdn.net/xmdxcsj/article/details/48790317 Crf模型 1. 定义 一阶(只考虑y前面的一个)线性条件随机场: 相比于最大熵模型的输 ...
随机推荐
- [WPF]获取控件间的相对位置
原文:[WPF]获取控件间的相对位置 [WPF]获取控件间的相对位置 周银辉 我们知道WPF有着比较灵活的布局方式,关于某个控件的坐标,Canv ...
- swift4.0 Http 请求
// // HttpHelper.swift // NavigateDemo // // Created by yixin ran on 07/08/2017. // Copyright © 2017 ...
- iOS Widget简单使用
iOS的Widget类似Android的Notification设置flags为Notification.FLAG_ONGOING_EVENT后 OK,大约知道是什么意思了,现在可以开始码了 ...
- Windows10 1607 x64/x86 + Office 2016 Win/Mac + KMS激活/安装密钥汇总
各位观众,这里汇总了一份最新微软系统和办公软件的资源清单,希望对你们有帮助. Windows10 1607 For x64 ed2k://|file|cn_windows_10_multiple_ed ...
- 【Windows10 IoT开发系列】配置篇
原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...
- 前端工程师应该都了解的16个最受欢迎的CSS框架
摘要: 今天给大家分享16个最受欢迎的CSS框架.这些是根据笔者的爱好以及相关查阅规整出来的.可能还有一些更棒的或者您更喜欢的没有列举出来.如果有,欢迎留言! Pure : CSS Framework ...
- configure -help
http://www.360doc.com/content/14/1215/17/18578054_433158382.shtml http://blog.csdn.net/mociml/articl ...
- Delphi指针运用理解
现在是面向对象漫天飞的年代了,大家都在在谈面向对象编程.Java对指针“避而不谈”,C#虽然支持指针运用,但是也淡化处理. 然而,指针还是好完全掌握为妙,省得在开发过程碰钉子,至于对指针的运用在于开发 ...
- JavaScript语言核心--词法结构
编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序.作为语法的基础,它规定了诸如变量名是什么样的.怎么写注释,以及程序语言之间如何分隔等规则. 1. 字符集 JavaScript程 ...
- qtchooser - a wrapper used to select between Qt development binary(2种方法)
---------------------------------------------------------------------------------------------------- ...