2015-01-09 3 views
1

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

<coordinator-app name="MY_APP" frequency="1440" start="2009-02-01T00:00Z" end="2009-02-07T00:00Z" timezone="UTC" xmlns="uri:oozie:coordinator:0.1"> 
    <datasets> 
    <dataset name="input1" frequency="60" initial-instance="2009-01-01T00:00Z" timezone="UTC"> 
     <uri-template>hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}/${HOUR}</uri-template> 
     <done-flag>trigger.dat</done-flag> 
    </dataset> 
    </datasets> 
    <input-events> 
    <data-in name="coordInput1" dataset="input1"> 
     <start-instance>${coord:current(-23)}</start-instance> 
     <end-instance>${coord:current(0)}</end-instance> 
    </data-in> 
    </input-events> 
    <action> 
    <workflow> 
     <app-path>hdfs://localhost:9000/tmp/workflows</app-path> 
    </workflow> 
    </action>  
</coordinator-app> 

Я начал работу Oozie и он находится в состоянии ожидания. Я выполнил сценарий, который создаст файл (trigger.dat) в указанной структуре каталогов в HDFS (hdfs: // localhost: 9000/tmp/income_feed/$ {YEAR}/$ {MONTH}/$ {DAY}/$ {HOUR}). Файл создан, все еще является ОЖИДАНИЕМ.

Может ли один помочь мне в этом ..

+1

Привет, я думаю, что что-то не так в вашем рабочем месте координатора. по существу, задание координатора должно находиться в состоянии запуска даже независимо от файла триггера или нет. – Ilango

+0

Чтобы быть технически корректным, это скорее конечное время, которое не очень хорошо. – patrungel

+0

Спасибо за комментарии @ satha/@patrungel Я изменил его и теперь он работает :) – author243

ответ

1

Я изменил даты начала и окончания, и теперь он работает.

coordinator.xml рабочий является:

<coordinator-app name="MY_APP" frequency="60" start="2015-01-12T05:00Z" end="2015-01-12T08:00Z" timezone="UTC" xmlns="uri:oozie:coordinator:0.1"> 
    <datasets> 
    <dataset name="input1" frequency="30" initial-instance="2015-01-12T04:02Z" timezone="UTC"> 
     <uri-template>hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}/${HOUR}</uri-template> 
     <done-flag>trigger.dat</done-flag> 
    </dataset> 
    </datasets> 
    <input-events> 
    <data-in name="coordInput1" dataset="input1"> 
     <start-instance>${coord:current(-1)}</start-instance> 
     <end-instance>${coord:current(0)}</end-instance> 
    </data-in> 
    </input-events> 
    <action> 
    <workflow> 
     <app-path>hdfs://localhost:9000/tmp/workflows</app-path> 
     <configuration> 
     <property> 
      <name>property1</name> 
      <value>${coord:dataIn('coordInput1')}</value> 
     </property> 
     </configuration> 
    </workflow> 
    </action>  
</coordinator-app> 

Некоторые моменты я наблюдал, являются:

  1. Структура каталогов ожидается основана на начальной инстанции = "2015-01-12T04: 02Z "и частоту =" 30 "набора данных.

  2. без объявления ниже свойств набора данных не будет рассматриваться Oozie

    <property> <name>property1</name> <value>${coord:dataIn('coordInput1')}</value> </property>

  3. Oozie всегда считает GMT/часовой пояс UTC. При планировании любого рабочего процесса учитывайте GMT ​​и планируйте соответственно.

  4. До создания каталога задание координатора будет находиться в состоянии RUNNING, но рабочее задание будет находиться в состоянии WAITING.

Смежные вопросы