簡體   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