0

昨日のデータセット入力が利用可能になった後にのみ、今日のインスタンスを実行するように Oozie コーディネーターをスケジュールする方法を教えてください。1 日前または 2 日前のデータセットなど、古いデータセットである必要がある 1 つの入力データセットのみをチェックする必要があります。今日のデータセットの入力を待つ必要はありません。

以下のようなものを使用してみました。ここでは、昨日のデータを確認できるようにインスタンスタグ内で ${coord:current(-1)} を使用しましたが、これは機能していないようです。昨日の日付でシグナルが利用できない場合でも、ジョブは通常の時間に起動されます。

    <coordinator-app name="hello-coord" frequency="${coord:days(1)}"
              start="2009-01-02T08:00Z" end="2009-01-04T08:00Z" timezone="America/Los_Angeles"
             xmlns="uri:oozie:coordinator:0.1">
   <datasets>
   <dataset name="din" frequency="${coord:days(1)}"
            initial-instance="2009-01-02T08:00Z" timezone="America/Los_Angeles">
     <uri-template>${baseFsURI}/${YEAR}/${MONTH}/${DAY}</uri-template>
     <done-flag>_SUCCESS</done-flag>
    </dataset>
    </datasets>
  <input-events>
     <data-in name="input" dataset="din">
            <instance>${coord:current(-1)}</instance>
     </data-in>
  </input-events>
  <action>
  <workflow>
      <app-path>${wf_app_path}</app-path>
  </workflow>
  </action>

4

1 に答える 1

1

タグは、<dataset>トリガー ファイルが表示されるフォルダーを設定するために使用されます。

タグは、 、 、などの<input-events>フォルダー パラメーターが計算される時刻を提供します。${YEAR}${MONTH}${DAY}

<instance>${coord:current(-1)}</instance>与えられた時間が -1 日であることを意味します。

したがって、初日、つまり「2009-01-02T08:00Z」では、 に与えられた時刻<dataset>は. 初期インスタンスの前のすべてのアクションは、トリガー ファイルが表示されるのを待たずに実行されます。"2009-01-01T08:00Z"initial-instance="2009-01-02T08:00Z"

解決策は変更することですinitial-instance="2009-01-01T08:00Z"

于 2018-03-18T07:10:38.417 に答える