Azkaban:工作流程中的条件执行

时间:2015-05-29 15:31:35

标签: oozie azkaban

我需要在我的工作流程中注入条件执行。例如:如果满足特定条件,则应执行特定工作流程。如果没有,则应执行不同的工作流程。

根据我的理解,Azkkaban没有直接的功能支持这一点。只有Oozie支持它。想知道Azkkaban用户如何处理这个问题?我相信每个人都必须以某种形式面对这一点。

谢谢, Kranthi

3 个答案:

答案 0 :(得分:1)

Azkaban的路线图表明,此功能仅存在于未来的路线图中,因此无法轻松配置。只剩下选项是以编程方式处理它。

如果有人有更好的建议,请告诉我。

感谢, Kranthi

答案 1 :(得分:1)

FWIW,我们通过检查shell脚本中的条件在Azkaban项目中执行此操作。然后,如果满足条件,脚本将使用Azkaban API触发另一个工作流程。

#!/bin/bash

# check some condition
check=`…`;

if [ ! -z "$check" ]; then

  # Authenticate ourselves to Azkaban, capturing the session id
  auth=`curl -k -X POST --data "action=login&username=my_user&password=my_password" https://localhost:8443 | jq '.["session.id"]' | sed -e 's/\"//g'`;

  # Run the workflow using the Auth session id, capturing the response
  run=`curl -k --get --data "session.id=$auth" --data 'ajax=executeFlow' --data 'project=my_project' --data "flow=my_flow" https://localhost:8443/executor  | jq '.message'`;

  # If $run response does not contain "successfully" it failed
  if [[ $run = *successfully* ]]; then 
      echo "'$3': RUN STARTED"; 
  else 
      echo "'$3': RUN ERROR"; 
      exit 1; 
  fi; 

else …

您需要知道触发的工作流在其自身的执行中运行。

答案 2 :(得分:0)

您可以使用Azkaban中的触发器插件来执行此操作。以下是我提出的一个简单示例:https://gist.github.com/feliperazeek/faae2fed6aef780442a4

您可以实现自己的Condition实现。