Передача значений из действия Java в следующее действие Java в рабочем процессе Oozie - PullRequest
1 голос
/ 28 июня 2019

У меня есть два java-действия, написанные на Oozie workflow.xml. Я хочу передать результаты моего первого действия 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"/> 

Может ли кто-нибудь помочь, что мне здесь не хватает?

1 Ответ

2 голосов
/ 03 июля 2019

Поиск Google на oozie capture_output java указывает прямо на Java Cookbook раздел "Элемент захвата-вывода" , цитата:

  • В этом примере мы передаем переменную PASS_ME между действием JAVA и действием PIG.
  • Переменной PASS_ME присваивается значение 123456 в действии JAVA ...
    Метод 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...