繁体   English   中英

将值从Java操作传递到Oozie工作流程中的下一个Java操作

[英]Passing values from Java action to next Java action in Oozie workflow

我有两个用Oozieworkflow.xml编写的Java操作。 我想将我的第一个Java动作的输出传递给下一个Java动作以供重用。

我知道这需要使用“ oozie.action.output.properties”来完成。 在第一个动作中,我将输出参数设置为“ buildFileName”,如下所示:

File file = new File(System.getProperty("oozie.action.output.properties"));
LOGGER.info("SystemGetProperty:" + System.getProperty("oozie.action.output.properties").toString());
Properties props = new Properties();
props.setProperty("buildFileName", buildFileName);
OutputStream os= new FileOutputStream(file);
props.store(os, "");
os.close();

但不幸的是,在第二个动作中,我无法使用参数值。 应用程序作业成功完成,但是参数值变为空。

我的第一个Java操作如下所示:

<action name="java-action1">
    <java>
        <main-class>XYZ.MyJavaAction</main-class>
        <arg>Args</arg>
        <capture-output />
    </java>
<ok to="java-action2"/> 
<error to="fail"/> 

我的第二个Java动作如下所示:

<action name="java-action2">
    <java>
        <main-class>XYZ.MyJavaAction</main-class>
        <arg>{"outputFileName":"${wf:actionData('java-action1')['buildFileName']}"}</arg>
    </java>
<ok to="End"/> 
<error to="fail"/> 

谁能帮我在这里所缺少的吗?

Google在oozie capture_output java上的搜索直接指向Java Cookbook的 “ Capture-output element”部分 ,引用:

  • 在此示例中,我们在JAVA操作和PIG操作之间传递了PASS_ME变量。
  • 在JAVA操作中,PASS_ME变量的值为123456。
    main()方法将属性文件写入oozie.action.output.properties ENVIRONMENT变量中指定的路径...
 Properties props = new Properties();
 props.setProperty("PASS_ME", "123456");
 File file = new File(System.getProperty("oozie.action.output.properties"));
 OutputStream os = new FileOutputStream(file);
 props.store(os, "");
 os.close();
  • PIG操作随后读取PASS_ME变量的值,并将其传递给PIG脚本...
    <param>MY_VAR=${wf:actionData('java1')['PASS_ME']}</param>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM