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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM