Задержка для набора данных в Oozie Coordinator

Нужна работа, которая выполняется в зависимости от наличия наборов данных, созданных в разделах Hive. Я заставил это работать, но теперь я хочу, чтобы все мои каналы запускались в номинальное время, но один всегда запускался с задержкой на день. Итак, если сегодня 5-19, все каналы должны быть там на 5-19, кроме одного, который нам нужен на 5-18.

Это то, что у меня есть на данный момент:

    <dataset name="mvHost" frequency="${coord:days(1)}" initial-instance="${jobStart}" timezone="America/New_York">
        <uri-template>${nameNode}/apps/hive/warehouse/uat_db.db/mv_host/create_date=${YEAR}${MONTH}${DAY}</uri-template>
        <done-flag></done-flag>
    </dataset>
    <!-- ensure MV_INTERFACE exists on partition date, need to delay by ONE day -->
    <dataset name="mvInterface" frequency="${coord:days(1)}" initial-instance="${jobStart}" timezone="America/New_York">
        <uri-template>${nameNode}/apps/hive/warehouse/uat_db.db/mv_interface/create_date=${YEAR}${MONTH}${DAY}</uri-template>
        <done-flag></done-flag>
    </dataset>

</datasets>
<input-events>
    <data-in name="input1" dataset="mvHost">
        <instance>${coord:current(0)}</instance>
    </data-in>
    <data-in name="input2" dataset="mvInterface">
        <instance>${coord:current(0)}</instance>
    </data-in>
</input-events>

What is the best way to instill the latency? I have tried editing the instance to be ${coord:current(-24)} but that failed. Also, I have tried using coord:dateOffset on initial-instance for MV_INTERFACE but the coordinator would never build.

Какие-либо предложения?


person theMJof91    schedule 19.05.2015    source источник


Ответы (1)


Я думаю, что вам нужно ${coord:offset (n, String timeUnit) здесь. Он используется везде, где вы используете ${coord:current(n)}, но позволяет указать смещение времени (как положительное, так и отрицательное) во время материализации набора данных. Итак, для вашего примера:

   <datasets>
    <dataset name="mvHost" frequency="${coord:days(1)}" initial-instance="${jobStart}" timezone="America/New_York">
        <uri-template>${nameNode}/apps/hive/warehouse/uat_db.db/mv_host/create_date=${YEAR}${MONTH}${DAY}</uri-template>
        <done-flag></done-flag>
    </dataset>
    <!-- ensure MV_INTERFACE exists on partition date, need to delay by ONE day -->
    <dataset name="mvInterface" frequency="${coord:days(1)}" initial-instance="${jobStart}" timezone="America/New_York">
        <uri-template>${nameNode}/apps/hive/warehouse/uat_db.db/mv_interface/create_date=${YEAR}${MONTH}${DAY}</uri-template>
        <done-flag></done-flag>
    </dataset>
</datasets>

<input-events>
    <data-in name="input1" dataset="mvHost">
        <instance>${coord:current(0)}</instance>
    </data-in>
    <data-in name="input2" dataset="mvInterface">
        <instance>${coord:offset(-1, "DAY")}</instance>
    </data-in>
</input-events>

Если 2016-01-01T00:00 время материализации координатора, то время материализации набора данных mvHost будет (то же самое) 2016-01-01T00:00, набор данных mvInterface будет 2015-12-31T00:00.

person pls    schedule 04.01.2016