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前面的一个)线性条件随机场: 相比于最大熵模型的输 ...
随机推荐
- Lexer的设计--中(4)
设计一个小型的内存池以及链表 上一节撸到万事俱备只欠真正的lex, 但是lex的作用是将源代码转化为Token流, 用什么保存Token? 这就涉及到我们要接触的第一个数据结构-链表, 虽然标准库中很 ...
- ASP.NET MVC 学习笔记1 Talk about controller & route
For the sake of learning programming better, I'd like to increase the frequency of using English. So ...
- SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction 解决方法
SHOW FULL PROCESSLIST; KILL 263071
- DSP Builder 12.0安装及crack方法
在安装dsp_builder之前请确保已安装所需要的matlab版本 在此之前我已经安装了matlab R2011a,下面安装dsp builder 下面就是破解了,因为12.0的版本刚出,还没有相应 ...
- 图像滤镜艺术---Glow Filter发光滤镜
原文:图像滤镜艺术---Glow Filter发光滤镜 Glow Filter发光滤镜 Glow Filter发光滤镜是一种让图像产生发光效果的滤镜,它的实现算法如下: 1,对原图P进行高斯模糊得到图 ...
- 龙芯GO!龙芯平台上构建Go语言环境指南
龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...
- 在 Windows 10 专业版、企业版或教育版上设置展台
原文: 在 Windows 10 专业版.企业版或教育版上设置展台 Set up a kiosk on Windows 10 Pro, Enterprise, or Education 适用于 Win ...
- return view 详解 MVC
1.return View(); 返回值 类型:System.Web.Mvc.ViewResult将视图呈现给响应的 View() 结果. 注释 View() 类的此方法重载将返回一个具有空 View ...
- 怎么看待php 面向对象思想
面向对象的程序设计思路是现代程序设计由面向过程演变面向对象的必然趋势,所以面向对象的而设计思路必然有它不同的时代意义,必然有着不同面向过程的不同历史使命,而php 5以后成功添加面向对象的设计思路其实 ...
- MYSQL的全局变量和会话变量
系统变量又分为全局变量与会话变量. 全局变量在MYSQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改. 会话变量在每次建立一个新的连接的时候,由MYSQ ...