私は開始時に開始時刻を365日に設定してから、毎日の頻度で入力データを持つ最新の日付に達するまでワークフローを実行するOozieコーディネーターを持っています。したがって、coordinator.xmlは次のようになります。毎日ワークフローを再実行
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<coordinator-app name="${jobName}" frequency="${coord:days(1)}" start="${startTime}" end="${endTime}" timezone="${timezone}" xmlns="uri:oozie:coordinator:0.2">
<controls>
<timeout>-1</timeout>
<concurrency>30</concurrency>
<execution>FIFO</execution>
</controls>
<datasets>
<dataset name="myData" frequency="${coord:days(1)}" initial-instance="${initialTime}" timezone="${timezone}">
<uri-template>${outputPath}/${YEAR}${MONTH}${DAY}</uri-template>
</dataset>
</datasets>
<input-events>
<data-in name="myInput" dataset="myData">
<instance>${coord:current(-1)}</instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>${appPath}</app-path>
<configuration>
<property>
<name>myInput</name>
<value>${coord:dataIn('myInput')}</value>
</property>
<property>
<name>date</name>
<value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, 'DAY'), 'yyyyMMdd')}</value>
</property>
</configuration>
</workflow>
</action>
</coordinator-app>
このコーディネーターは起動時に365のワークフローをトリガーします。その後、翌日には、その日の入力データに対して1つのワークフローが実行されます。翌日もそうです。
要件が変更されており、初めてという365のワークフローを毎日実行する必要があります。それで、スタートアップ時には今のように走りたい。しかし、翌日、入力データが利用できるようになったら、私は最後の365日間、再び毎日のワークフローを実行する必要があります。また、新しい入力データが検出されると、翌日以降も同様に処理されます。
どうすればこの問題を解決できますか?入力として考慮するインスタンスの範囲を指定するコーディネータ使用start-instance
とend-instance
のdata-in
タグで おかげで、
アルバロ