Событие ввода данных Oozie Cordinator не работает: ошибка неформатированной функции - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь запустить задание координатора в oozie через ambari gui ... но получаю исключение при создании события ввода набора данных ...

ACTION [-] Возникло исключение: Неформатированная функция: 2019-11-02T18: 10Z Выполнение задания не удалось

Я даю время начала и окончания в графическом интерфейсе ...

<?xml version="1.0" encoding="UTF-8" standalone="no"?><coordinator-app xmlns="uri:oozie:coordinator:0.5" end="2019-11-01T18:20Z" frequency="${coord:days(1)}" name="ETLTest2" start="2019-11-01T18:15Z" timezone="GMT-05:00"> <datasets> <dataset frequency="${coord:days(1)}" initial-instance="2019-11-01T18:15Z" name="ETL_MDM" timezone="GMT-06:00"> <uri-template>hdfs://devnamesvccluster/user/sparkcronsvc/edm_ucsys/ingestion/</uri-template> </dataset> </datasets> <input-events> <data-in dataset="ETL_MDM" name="ETL_Check_Sqoop"> <start-instance>2019-11-02T18:10Z</start-instance> <end-instance>2019-11-01T18:30Z</end-instance> </data-in> </input-events> <action> <workflow> <app-path>/user/spid/edm_tab/full/workflow_etl2.xml</app-path> </workflow> </action> </coordinator-app>

Дайте мне знать, если я что-то упустил. ..

1 Ответ

0 голосов
/ 05 ноября 2019

Вы должны использовать ${coord:current(n)} или ${coord:latest(n)} в экземплярах набора данных вместо указания определенного времени. Я рекомендую поискать книгу A pache Oozie Мохаммада Камрула Ислама и Аравинда Сринивасана, в ней есть хорошее объяснение этих концепций триггеров данных, которые могут быть трудны для понимания.

или официальные документыдля того же самого: https://oozie.apache.org/docs/4.2.0/CoordinatorFunctionalSpec.html#a6.6.1._coord:currentint_n_EL_Function_for_Synchronous_Datasets

Пример того, как должно выглядеть ваше входное событие:

<input-events>
    <data-in name="event_input1" dataset="ds_input1">
        <start-instance>${coord:current(-4)}</start-instance>
        <end-instance>${coord:current(-1)}</end-instance>
    </data-in>
</input-events>

или

<input-events>
    <data-in name="event_input1" dataset="ds_input1">
        <instance>${coord:current(0)}</instance>
    </data-in>
</input-events>

Вы также можете захотеть шаблонизировать ваш URI- укажите, как вы разбиваете данные:

<uri-template>
       hdfs://bar:8020/app/logs/${YEAR}/${MONTH}/${DAY}/${HOUR}/data
</uri-template>
...