0

1 つの Oozie ジョブで処理するスクリプトが 3 つあります。ジョブ a、b、c を言います。b と c は、たとえば 11-1 から数日間実行されています。a も含めたいので、そのうちの 3 つが将来的に並行して実行されます。ジョブ a については、b と c がすでに行っていた昔に追いつくようにしたいと考えています。開始時間も 11-1 としていますので、11-1 からスタートします。ここで、決定アクションを示します。

<switch>
    <case to="eadp-hive-bf4-old">
        ${TIMESTAMPnow} gt ${TIMESTAMP}
    </case>
    <default to="eadp-hive-bf4-events"/>
</switch>

私がやりたいのは、現在の時間が公称時間よりも大きい場合、a; のみを実行することです。現在の時刻がデフォルトの公称時刻である場合、3 つのジョブすべてを実行します。

gt 比較 (より大きい) が正しく機能しておらず、どちらも機能していません&gt;

b と c の古いジョブの正確なディレクトリを確認するために使用できる isDir EL がありますが、パーティションとして datetime を使用しているため、パスの datetime 部分は適切なパターンではありません。 .

ワークフローアクションで現在の日時と公称日時を比較して、正しい決定を下す方法はありますか?

ありがとう。

4

1 に答える 1

1

式を ${ ... } 内に配置する必要があり、タイムスタンプは比較可能 (long または ISO 文字列) である必要があります。例:

${TIMESTAMPnow gt TIMESTAMP}
于 2013-11-13T15:43:58.400 に答える