2016-08-01 95 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

不好回答我自己的問題,因爲我已經制定出解決方案,它的確有點顯而易見。我只是有點困惑。發射頻率由協調器和數據集頻率以及觸發目錄和文件控制。如果你不想要一個觸發文件,然後離開done-flag空。如果沒有添加,則默認標誌文件是_SUCCESS。

因此,如果觸發器可用,工作流將在指定的頻率下觸發。所以我改變了我的線和數據集的頻率爲30(分鐘)。作爲最後的任務,我的工作流程刪除了觸發器