2016-08-01 4 views
0

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

<coordinator-app name="ConfirmDataMasterTrigger" 
      frequency="${frequencyMins}" 
      start="${startTime}" 
      end="${endTime}" 
      timezone="${timeZoneDef}" 
      xmlns="uri:oozie:coordinator:0.4" 
      xmlns:sla="uri:oozie:sla:0.2"> 
    <controls> 
      <timeout>${TimeOutMins}</timeout> 
      <concurrency>${Concurrency}</concurrency> 
      <execution>${Execution}</execution> 
    </controls> 
    <datasets> 
      <dataset name="inputDS" 
        frequency="${coord:days(1)}" 
        initial-instance="${startTime}" 
        timezone="${timeZoneDef}"> 

        <uri-template>${triggerFileDir}</uri-template> 
        <done-flag></done-flag> 
      </dataset> 
    </datasets> 
    <input-events> 
      <data-in name="ConfirmDataMasterTrigInput" 
        dataset="inputDS"> 
        <instance>${coord:current(0)}</instance> 
      </data-in> 
    </input-events> 
    <action> 
      <workflow> 
        <app-path>${workflowAppPath}</app-path> 
        <configuration> 
         <property> 
         <name>SaveDateString</name> 
         <value>${coord:formatTime(coord:actualTime(),"-yyyyMMdd-HHmmss")}</value> 
         </property> 
         <property> 
         <name>WaitForThisInputData</name> 
         <value>${coord:dataIn('ConfirmDataMasterTrigInput')}</value> 
         </property> 
        </configuration> 
      </workflow> 
    </action> 

с файлом свойств, который выглядит как этот

nameNode=hdfs://hc1m1.nec.co.nz:8020 
jobTracker=hc1r1m2.nec.co.nz:8050 
hdfsUser=oozie 
wfProject=ConfirmDataMaster 
oozie.libpath=${nameNode}/user/oozie/share/lib 
oozie.use.system.libpath=true 
oozie.wf.rerun.failnodes=true 
moveFile=ConfirmDataMaster_edit.csv 
sourceDir=${nameNode}/mule/sheets/input/ConfirmDataMaster/ 
targetDir=/mule/sheets/store/ 
sourceFile=${sourceDir}${moveFile} 
targetFile=${targetDir}${moveFile} 
frequencyMins=10 
startTime=2016-07-31T12:00Z 
endTime=2099-01-01T12:00Z 
timeZoneDef=GMT+12:00 
TimeOutMins=10 
Concurrency=1 
Execution=FIFO 
triggerDir=trigger/ 
triggerFileDir=${sourceDir}${triggerDir} 
doneFlag=trigger.dat 
workflowAppPath=${nameNode}/user/${hdfsUser}/wf/${wfProject} 
oozie.coord.application.path=${nameNode}/user/${hdfsUser}/wf/${wfProject} 

Я не имеющим проблемы в получении работы потока в которые инициируются в координатор, учитывая событие, основанное на наборе данных. То, что я вижу, заключается в том, что под рабочий процесс непрерывно срабатывает. Может ли кто-нибудь конкретизировать изменения, которые я должен внести, или мою ошибку. Очевидно, что мой рабочий процесс очищает и удаляет путь триггера. Заранее спасибо.

ответ

0

Я отвечаю на свой вопрос, потому что Ive разработал решение, и это немного очевидно. Я был немного смущен. Частота стрельбы контролируется координатором и частотами набора данных, а также каталогом и файлом триггера. Если вам не нужен файл триггера, оставьте флаг «пустой» пустым. Если это не добавлено, файл флага по умолчанию - _SUCCESS.

Так что, если триггер доступен, рабочий процесс будет срабатывать на указанных частотах. Поэтому я изменил свои частоты на шнур и данные на 30 (мин). В качестве конечной задачи мой рабочий процесс удаляет триггер.

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