本文上接《Azkaban Flow 2.0 使用简介》,对Azkaban Condition Flow (条件工作流) 做简单介绍

目录

条件工作流 介绍

作用

条件工作流,允许用户根据条件指定是否运行某些作业

使用方式

  1. 用户可以根据运行时参数(如先前作业的输出)运行或禁用某些作业
  2. Azkaban提供了一些预定义的宏,用户可以直接使用,用于比较父作业的运行状态来运行或禁用某些作业

支持的运算符

运算符 含义
== 等于
!= 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于
&&
||
!

作业运行时参数的条件:

  1. 使用 ${jobName:param} 来定义作业运行时参数的条件
  2. “:” 用于分隔jobName和参数
  3. job运行时,使用参数与条件中的字符串或数字进行比较
  4. 用户需要事先将参数的值写入 $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"

条件工作流 实例

  1. 新建两个文件:flow20.project 和 .flow 为扩展名的文件
  2. 打包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页面中的显示是如下图的样子

  1. 实例中“JobC”的condition不成立,所以不会执行
  2. “JobD”的condition是只要“JobB”和“JobC”有一个成功即可执行

所有上述实例最终的执行结果为:“JobC”不执行,其他均执行成功。如下图:

附录

官方文档

https://azkaban.readthedocs.io/en/latest/conditionalFlow.html#

例子源码

https://github.com/remainsu/azkaban_job

Azkaban Condition Flow (条件工作流) 使用简介的更多相关文章

  1. Azkaban Flow 2.0 使用简介

    官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用 目录 目录 一.简单的Flow 1. 新建 flow20.project 文件 2. 新建 .flow 文件 3. ...

  2. 工作流调度器azkaban(以及各种工作流调度器比对)

    1:工作流调度系统的作用: (1):一个完整的数据分析系统通常都是由大量任务单元组成:比如,shell脚本程序,java程序,mapreduce程序.hive脚本等:(2):各任务单元之间存在时间先后 ...

  3. Activiti工作流引擎简介

    Activiti工作流引擎简介 一.概述 Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活 ...

  4. python笔记11-多线程之Condition(条件变量)

    前言 当小伙伴a在往火锅里面添加鱼丸,这个就是生产者行为:另外一个小伙伴b在吃掉鱼丸就是消费者行为.当火锅里面鱼丸达到一定数量加满后b才能吃,这就是一种条件判断了. 这就是本篇要讲的Condition ...

  5. 工作流--JBPM简介及开发环境搭建

    一. 工作流简介 项目中不断的接触工作流,点点滴滴积累了一些,下面把一些学习到的东西整理记录下来. 工作流一般的适用场景:公文流转.行政审批.订单处理.产品研发.制造过程等.用专业一点的语言来描述工作 ...

  6. activiti工作流框架简介

    常见的工作流框架:activiti, JBPM, OSWorkflow activiti框架基于23张基础的表数据, 基于Mybatis操作数据库. JBPM框架基于18张基础的表数据, 基于hibe ...

  7. Java代码实现对Azkaban的Flow进行设置定时

    代码如下: public class CurlToAzkaban{ public static void scheduleExecute(String flow, String cronExpress ...

  8. python多线程之Condition(条件变量)

    #!/usr/bin/env python # -*- coding: utf-8 -*- from threading import Thread, Condition import time it ...

  9. 条件随机场CRF简介

    http://blog.csdn.net/xmdxcsj/article/details/48790317 Crf模型 1.   定义 一阶(只考虑y前面的一个)线性条件随机场: 相比于最大熵模型的输 ...

随机推荐

  1. MVC 调试路由

    1.添加引用RouteDebug.dll 2 修改Global.asax,切记调试过后要删掉 using System;using System.Collections.Generic;using S ...

  2. 记一次ASP.NET MVC4 升级到MVC5的小问题解决

    原文:记一次ASP.NET MVC4 升级到MVC5的小问题解决 .NET 4.0 MVC4版本,升级到.NET 4.6.1 MVC5: 1.使用nuget更新所有 与mvc相关的类库; 2.更改~/ ...

  3. 使用MinGW编译Boost,MSVC编译Boost的几种链接方式 good

    1.下载Boost(http://www.boost.org) 我目前用的是1.61.0版本 2.将MinGW下的bin目录完整路径设置到系统环境变量Path中,保证cmd命令行能找到gcc,g++等 ...

  4. MinGW版Qt如何搭建lua环境?(详细步骤)

    操作系统是windows,lua是Lua for Windows 5.1.4包含了这三个头文件 <ignore_js_op>  在.pro里加了includepath: <ignor ...

  5. 全面解析ECMAScript 6模块系统

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  6. 命令行版扫雷(vc08)

    复制代码模拟鼠标各种按键 左键 翻开右键 标雷左右键 翻开周围 先判断当前点是否为已翻开的点 时间地雷计数器清屏 展开 大于8时不管 小于等于8时翻开本身 为0时翻开周围的输出 同雷数图雷区判断 判断 ...

  7. logstash performance testing

    最近一直在和peformance team的同事做logstash 5.6.2的测试,主要测试两个方面:一方面测试log数据是否能全部被logstash获取与发出去,一方面测试logstash自身的c ...

  8. 使用VS2010再装VS2013不用再烦恼不兼容

    某些同事有时在开发过程中出现这么个问题,在使用js直接异步调用类库时,弹出错误类库不存在或者没有定义等,类似问题,这个时候可能你正在绞尽脑汁的去解决问题,明明问题不大,为什么安装VS2013后就不能打 ...

  9. IT安全军火库-转

    全球有260万信息安全专业人士,渗透测试工具是他们“安全军火库”中最常使用的装备,但直到最近,可用的渗透测试工具才丰富起来,但这也带来一个问题,挑选合适的渗透测试工具成了一件麻烦事,一个最简单的方法就 ...

  10. ansible(一)

    一.目的 代码发布系统 二.准备工作:干净的虚拟机准备4个 准备一个虚拟机后克隆出另外三个,注意,克隆前要将虚拟机关机 三.可以用来代码发布的工具 puppet ansible slatstack 四 ...