2016-08-18 5 views
2

Ich möchte den Arbeitsablauf basierend auf der Verfügbarkeit von Steuerungsdateien für das vorherige Datum ausführen. Das Datumsformat in meinem Verzeichnis ist $ {basePath} /YYYYMMdd/00/_Complete. Ich möchte die _Complete-Datei in meinem 00 überprüfen. Mein Job wird täglich an den Daten des vorherigen Tages ausgeführt. Ich habe die Optionen in ähnlichen Fragen versucht, aber immer noch nicht funktioniert. Wenn ich es zum Beispiel für Daten am selben Tag mit unterem Wert teste, funktioniert es aber nicht mit (-1) Option. Gibt es eine Einschränkung für URI-TEMPLATE-Formate, dh müssen wir es im festen Format Pfad/$ {YEAR} $ {$ MONTH} $ {DAY}/Complete haben Bitte helfen Sie.So konfigurieren Sie den Oozie-Koordinatordatensatz für den vorherigen Tag

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

Hier ist der drynun Ausgang für meine Koordinator Job.

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

Irgendwelche Fortschritte dabei? Auch ich habe ähnliche Probleme – user3560220

+0

Ich habe keine Out-of-Box-Lösung dafür erhalten. Also habe ich eine Arbeit gemacht, indem ich eine weitere einfache Java-Aktion hinzugefügt habe, um die Verfügbarkeit der Eingaben zu prüfen, die die angegebene Eingangsdatenpfadliste/das Datum prüft. Es ist nicht das Beste, aber ich habe meinen Anwendungsfall gelöst. – SurjanSRawat

Antwort

0

konnte ich meinen Job bekommen für die richtige _Complete Flagge mit separaten <datasets> und <input-events> zu suchen.

<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) ist der Teil, der gestern (für eine tägliche Datensatz) angibt. In meinem Fall war das Problem, dass ich ein Beispiel mit current(0) kopiert hatte.

Verwandte Themen