[英]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.