【问题标题】:How does one check completion status of LoadApplicationService?如何检查 LoadApplicationService 的完成状态?
【发布时间】:2016-12-29 14:17:33
【问题描述】:

我在工作流中有 2 个操作节点:javaMainActionjavaMainAction2

我的 LoadApplicationService 方法在执行后返回 SUCCESS 或 FAILURE。

如果返回成功,如何检查响应?

工作流.xml:

<workflow-app name="WorkflowJavaMainAction" xmlns="uri:oozie:workflow:0.1">
    <start to="javaMainAction" />
    <action name="javaMainAction">
        <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <main-class>in.augmentiq.maxiq.dataschedular.services.LoadApplicationService</main-class>
            <arg>${workflowAppPath}/javaMainActionInput/schedule_config.properties</arg>
            <arg>${workflowAppPath}/javaMainActionInput/appRequestParams.json</arg>
            <capture-output/>
        </java>
        <ok to="javaMainAction2" />
        <error to="killJobAction" />
    </action>
    <action name="javaMainAction2">
        <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <main-class>in.augmentiq.maxiq.dataschedular.services.LoadApplicationService</main-class>
            <arg>${workflowAppPath}/javaMainAction2Input/schedule_config.properties</arg>
            <arg>${workflowAppPath}/javaMainAction2Input/appRequestParams.json</arg>
            <capture-output/>
        </java>
        <ok to="end" />
        <error to="killJobAction" />
    </action>
    <kill name="killJobAction">
        <message>"Killed job due to error: ${wf:errorMessage(wf:lastErrorNode())}"</message>
    </kill>
    <end name="end" />
</workflow-app>

【问题讨论】:

  • 让标题更有针对性。

标签: java xml oozie oozie-coordinator


【解决方案1】:

LoadApplicationService 需要将输出写入key=pair 格式,例如response=SUCCESS。您可以像这样检查输出:

${wf:actionData("action-name")["key"]}

使用决策控制节点进行比较和决策Decision_Control_Node


编辑评论:如何在 java 操作中编写属性。

main() 方法将属性文件写入oozie.action.output.properties ENVIRONMENT 变量中指定的路径。 Reference

   public static void main (String[] args)
   {
      String fileName = args[0];
      try{
         File file = new File(System.getProperty("oozie.action.output.properties"));
         Properties props = new Properties();
         props.setProperty("PASS_ME", "123456");

         OutputStream os = new FileOutputStream(file);
         props.store(os, "");
         os.close();
         System.out.println(file.getAbsolutePath());
      }
      catch (Exception e) {
         e.printStackTrace();
      }
   }

【讨论】:

  • 如何在之前检查它?
  • @YoungHobbit :通过这个,我能够捕获 Shell 作业(echo)的输出,但无法捕获 Java Main Action Job 的输出(由 sysout 生成的输出)。对此有何建议?
  • @YoungHobbit : 我们正在写入的文件是本地文件,那么 oozie 怎么会从该文件中获取数据(不在 HDFS 中)
  • Oozie 读取相同的文件(使用属性)capture-output。所以它会起作用。你试过了吗?谢谢。
猜你喜欢
  • 2019-08-06
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多