博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Azkaban Condition Flow (条件工作流) 使用简介
阅读量:5248 次
发布时间:2019-06-14

本文共 1826 字,大约阅读时间需要 6 分钟。

本文上接,对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} > 5one_successall_done && ${JobC:param3} != "foo"(!{JobD:param4} || !{JobE:parm5}) && all_success || ${JobF:parm6} == "bar"

条件工作流 实例

  1. 新建两个文件:flow20.project.flow 为扩展名的文件
  2. 打包zip & 上传zip & 运行

详细过程略(可参见),.flow 文件举例:

# 文件名:condition_2flow.flownodes: - 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://www.cnblogs.com/remainsu/p/azkaban-condition-flow-tiao-jian-gong-zuo-liu-shi-.html

你可能感兴趣的文章
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
Struts2工作原理
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
查看>>
【SVM】libsvm-python
查看>>
C++循环单链表删除连续相邻重复值
查看>>
渣渣小本求职复习之路每天一博客系列——Java基础(3)
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
ASP.NET使网页弹出窗口不再困难
查看>>
Leetcode Balanced Binary Tree
查看>>
Leetcode 92. Reverse Linked List II
查看>>
windown快速安装xgboost
查看>>
Linux上安装Libssh2
查看>>
九.python面向对象(双下方法内置方法)
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>