首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oozie工作流中将值从Java操作传递到下一个Java操作

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

Stack Overflow用户
提问于 2019-06-28 16:25:07
回答 1查看 877关注 0票数 1

我有两个用Oozie workflow.xml编写的java操作。我希望将我的第一个java操作的输出传递给下一个java操作以供重用。

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

代码语言:javascript
复制
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();

但不幸的是,在第二个操作中,我无法使用参数值。应用程序作业正在获得成功,但参数值为null。

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

代码语言:javascript
复制
<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操作如下所示:

代码语言:javascript
复制
<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"/> 

有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2019-07-03 15:19:28

oozie capture_output java上的Google搜索直接指向Java烹饪本部分“捕获-输出元素”,引用如下:

  • 在本例中,我们在JAVA操作和PIG操作之间传递一个PASS_ME变量。
  • PASS_ME变量在JAVA操作中被赋予值123456 . main()方法将属性文件写入oozie.action.output.properties环境变量中指定的路径.
代码语言:javascript
复制
 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变量的值,并将其传递给猪脚本. <param>MY_VAR=${wf:actionData('java1')['PASS_ME']}</param>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56810295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档