Несколько действий hive2 в oozie worflow, получающих одну и ту же метку времени - PullRequest
0 голосов
/ 22 мая 2018

Я создал рабочий процесс, который имеет два действия hive2, и я запускаю его, используя Hue.Мне нужно получить текущее время из системы при запуске рабочего процесса и передать его обоим действиям.Это структура рабочего процесса:

<?xml version="1.0" encoding="UTF-8"?>

<workflow-app xmlns="uri:oozie:workflow:0.5" name="workflow.xml">
    <global>
        <job-tracker>host1:1234</job-tracker>
        <name-node>hdfs://myhost:4312</name-node>
        <configuration> 
            <property> 
                <name>execution_start</name> 
                <value>${timestamp()}</value> 
            </property> 
        </configuration> 
    </global>
    <start to="script1" />
    <action name="script1">
        <hive2 xmlns="uri:oozie:hive2-action:0.2">
            <jdbc-url>jdbc:hive2://myhost:10/default</jdbc-url>
            <script>script1.hql</script>
            <param>execution_start=${execution_start}</param>
        </hive2>
        <ok to="script2" />
        <error to="fail" />
    </action>
    <action name="script2">
        <hive2 xmlns="uri:oozie:hive2-action:0.2">
            <jdbc-url>jdbc:hive2://myhost:10/default</jdbc-url>
            <script>script2.hql</script>
            <param>execution_start=${execution_start}</param>
        </hive2>
        <ok to="end" />
        <error to="fail" />
    </action>
    <kill name="fail">
        <message>Sub workflow failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end" />
</workflow-app>

Мне нужно иметь одинаковую метку времени в обоих действиях улья.Пока что Хюэ просит ввести параметр с именем execution_start.

Я тоже пробовал: <param>execution_start=${wf:conf('execution_start')}>.Мне не нужно вводить параметр с этим, но я получаю значение NULL внутри скрипта.

Обратите внимание, что <param>execution_start=${timestamp()}> работает, но он не работает для меня, поскольку временные метки будут отличаться в каждом действии.

1 Ответ

0 голосов
/ 23 мая 2018

Вы можете сначала вызвать действие оболочки Oozie, которое просто возвращает временную метку, захватить выходные данные этого первого действия и передать его в действия Hive2, используя <param>execution_start=${wf:actionData('TimestampShell')}</param>

...