Координатор Oozie - файловый триггер на основе событий - многократное срабатывание

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

<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}

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

1 ответ

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

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

Другие вопросы по тегам