2016-08-18 43 views
2

我想根據先前日期的控制文件的可用性來運行工作流程。我的目錄中的日期格式是$ {basePath} /YYYYMMdd/00/_Complete.I要檢查我的00內部的_Complete文件。我的作業將每天在前一天的數據上運行。我嘗試了類似問題中提供的選項,但仍然無法正常工作。例如,當我測試當天數據的值低於數值時,它正在工作,但沒有使用(-1)選項。對URI-TEMPLATE格式有任何限制,這意味着我們需要使用固定格式的路徑/ $ {YEAR} $ {$ MONTH} $ {DAY} /完成 請幫忙。如何配置前一天的Oozie協調員數據集

<instance>${coord:current(0)}</instance> 

這是我的協調員工作的dryrun輸出。

***coordJob after parsing: *** 
<coordinator-app xmlns="uri:oozie:coordinator:0.1" name="my_Scheduler_5f" frequency="1" start="2016-08-17T23:40Z" end="2016-08-19T23:45Z" timezone="America/Los_Angeles" freq_timeunit="DAY" end_of_duration="NONE"> 
    <controls> 
    <timeout>30</timeout> 
    </controls> 
    <input-events> 
    <data-in name="coordInput_1" dataset="input1"> 
     <dataset name="input1" frequency="1" initial-instance="2016-08-17T00:00Z" timezone="America/Los_Angeles" freq_timeunit="DAY" end_of_duration="NONE"> 
     <uri-template>${nameNode}/myHdfsPath/Finalpath1/${YEAR}${MONTH}${DAY}/00/</uri-template> 
     <done-flag>_Complete</done-flag> 
     </dataset> 
     <instance>${coord:current(-1)}</instance> 
    </data-in> 
    <data-in name="coordInput_2" dataset="input2"> 
     <dataset name="input2" frequency="1" initial-instance="2016-08-17T23:00Z" timezone="America/Los_Angeles" freq_timeunit="DAY" end_of_duration="NONE"> 
     <uri-template>${nameNode}/myHdfsPath/Finalpath2/${YEAR}${MONTH}${DAY}/00/</uri-template> 
     <done-flag>_Complete</done-flag> 
     </dataset> 
     <instance>${coord:current(-1)}</instance> 
    </data-in> 
    </input-events> 
    <action> 
    <workflow> 
     <app-path>${nameNode}/myHdfsPath/My_POC/wf-app-dir</app-path> 
     <configuration> 
     <property> 
      <name>date</name> 
      <value>${coord:formatTime(coord:dateOffset(coord:actualTime(),-1,'DAY'), "yyyyMMdd")}</value> 
     </property> 
    </workflow> 
    </action> 
</coordinator-app> 
***actions for instance*** 
+0

這方面的進展如何?即使我面臨着類似的問題 – user3560220

+0

我沒有得到任何這種解決方案。所以我通過添加1個更簡單的java操作來檢查輸入數據的可用性,這些輸入檢查給定的輸入數據路徑列表/日期。它不是最好的,但解決了我的用例。 – SurjanSRawat

回答

0

我能得到我的工作,使用單獨的<datasets><input-events>尋找合適的_Complete標誌。

<datasets> 
    <dataset name="input1" frequency="1" initial-instance="2016-08-17T00:00Z" timezone="America/Los_Angeles" freq_timeunit="DAY" end_of_duration="NONE"> 
    <uri-template>${nameNode}/myHdfsPath/Finalpath1/${YEAR}${MONTH}${DAY}/00/</uri-template> 
    <done-flag>_Complete</done-flag> 
    </dataset> 
    ... input2 ... 
</datasets> 

<input-events> 
    <data-in name="coordInput_1" dataset="input1"> 
    <instance>${coord:current(-1)}</instance> 
    </data-in> 
    ... coordInput_2 ... 
</input-events> 

current(-1)是指定昨天(對於日常數據集)的部分。在我的情況下,問題是我複製了current(0)的例子。

相關問題