zoukankan      html  css  js  c++  java
  • Azkaban Condition Flow (条件工作流) 使用简介

    本文上接《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

  • 相关阅读:
    Nginx入门
    Spring基础知识汇总 Java开发必看
    java ArrayList倒序
    1
    js event 的target 和currentTarget
    java 文件的写入和读取
    DOMContentLoaded与load的区别
    JS中先有Object还是先有Function?
    JSON.stringify的三个参数
    Java的泛型约束和限制
  • 原文地址:https://www.cnblogs.com/remainsu/p/azkaban-condition-flow-tiao-jian-gong-zuo-liu-shi-.html
Copyright © 2011-2022 走看看