java - 在 Oozie 工作流中将值从 Java 操作传递到下一个 Java 操作
问题描述
我有两个用 Oozie workflow.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"/>
谁能帮助我在这里缺少什么?
解决方案
谷歌搜索oozie capture_output java
直接指向Java Cookbook部分“Capture-output element”,引用:
- 在这个例子中,我们在 JAVA 动作和 PIG 动作之间传递了一个 PASS_ME 变量。
- PASS_ME 变量在 JAVA 操作中被赋予值 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>
推荐阅读
- python - Python 程序/控制器适用于一个用户,但不适用于其他用户
- python-3.x - 如何在 Google Cloud Platform (GCP) 上访问 VM 实例的已安装 python 目录/'site-packages' 文件夹
- python - ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型时间戳)
- serverless-framework - 如何在用无服务器框架编写的 AWS Step Functions 中引用动态 lambda ARN?
- java - 当n为2^k时,如何证明m%n等价于m&(n-1)?
- c - 调用 mremap(2) 时出现奇怪的信号处理程序行为
- python - 如何使用大型 MS COCO 数据集在 Tensorflow 中训练模型以进行多类目标检测?
- flutter - 通过 Flutter for Firebase 重新发送验证
- python - 从 txt 文件 Python 3.x 帮助的列表中复制元素 :(
- javascript - 如何让 vue-progressbar 显示?