樣例如下:
<coordinator-app name="test_job" frequency="${coord:days(1)}" start="${job_start}" end="${job_end}" timezone="GMT+08:00" xmlns="uri:oozie:coordinator:0.2"> <controls> <concurrency>1</concurrency> </controls> <datasets> <dataset name="input_data" frequency="${coord:days(1)}" initial-instance="${job_start}" timezone="GMT+08:00"> <uri-template>${monitor_workflow_run_status_path}</uri-template> <done-flag>_SUCCESS</done-flag> </dataset> </datasets> <input-events> <data-in name="input" dataset="input_data"> <instance>${coord:current(-1)}</instance> </data-in> </input-events> <action> <workflow> <app-path>${application_path}</app-path> <configuration> <property> <name>nominalformateDate</name> <value>${coord:formatTime(coord:nominalTime(), "yyyyMMdd")}</value> </property> <property> <name>user_name</name> <value>${coord:user()}</value> </property> <property> <name>nominal_date</name> <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, 'DAY'), "yyyy-MM-dd")}</value> </property> </configuration> </workflow> </action> </coordinator-app>
當某個coordinator job 開始執行時,oozie會首先檢查所有的input-events是否都已滿足條件,主要檢查以下內容:uri-template
1、uri-template 指定路徑的文件或文件夾是否已經存在;
2、done-flag 指定的文件是否存在。
只有當input-events滿足了設置的條件時,工作流才會切換到runing狀態,否則將一直處於wait狀態,並時刻監視指定的文件或文件夾,一但input-events滿足了,工作流會立即進入running狀態。
done-flag 的設置一般有三種情況:
1、直接不設置 done-flag 標簽,如下:
<dataset name="input_data" frequency="${coord:days(1)}" initial-instance="${job_start}" timezone="GMT+08:00"> <uri-template>${monitor_workflow_run_status_path}</uri-template> </dataset>
oozie 將默認done-flag 為 '_SUCCESS',所以需要滿足 uri-template 指定路徑的文件夾下存在 _SUCCESS 文件 ,job才觸發執行。
2、設置done-flag 標簽,但值為空,如下:
<dataset name="input_data" frequency="${coord:days(1)}" initial-instance="${job_start}" timezone="GMT+08:00"> <uri-template>${monitor_workflow_run_status_path}</uri-template> <done-flag></done-flag> </dataset>
oozie 則直接檢測 uri-template 指定路徑的文件或文件夾是否存在,只要存在就直接觸發 job執行。
3、設置done-flag 標簽,值不為空,如下:
<dataset name="input_data" frequency="${coord:days(1)}" initial-instance="${job_start}" timezone="GMT+08:00"> <uri-template>${monitor_workflow_run_status_path}</uri-template> <done-flag>trigger.dat</done-flag> </dataset>
oozie 則直接檢測 uri-template 指定路徑的文件夾下是否存在done-flag指定的文件如本例的 trigger.dat 文件,只要存在就觸發 job執行。