Как создать DAG, которая должна обрабатывать данные с сегодняшнего дня? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть DAG, который начинается в 7:30 вечера каждый день.Необходимо обработать файлы, расположенные в каталоге / data / yyyy-mm-dd /.yyyy-mm-dd - это тот же день.

Если я использую execute_date + timedelta (день = 1), он работает, когда планировщик запускает DAG.Но это ломается, когда я использую команду backfill (я должен дать ей 2019-01-01 для запуска на 2019-01-02)

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 07 февраля 2019

Ваш вопрос звучит немного запутанным по поводу execution_date для обратной засыпки.Команда backfill просит вас указать альтернативные даты начала и окончания для запуска группы DAG. Затем она использует schedule_interval для определения прогонов, которые должны были бы выполняться в этом диапазоне, и передает им execution_date.

* 1005.* Итак, ваш schedule_interval, вероятно, выглядит как 30 19 * * *.И, как вы знаете, вашему пробегу передается начало интервала при закрытии этого интервала, поэтому запланированный execution_date 2019-01-01T19: 30: 00.000 будет запущен после 2019-01-02T19: 30:00,000.Кажется, что в то время вы хотите, чтобы задание выбрало данные, попавшие в /data/2019-01-02/, поэтому вы добавляете день к execution_date и форматируете его для источника.

Если вы backfill , он должен вести себя одинаково (а не сдвигать время вокруг).Так что, учитывая -s 2019-01-01 -e 2019-01-02, он собирается заполнить прогон, который был бы запущен после 2019-01-02T19: 30: 00.000 с датой выполнения 2019-01-01T19: 30: 00.000, не так ли?

Что касается других способов сделать это:

  • Вы можете перенести свои пробежки на полночь и попросить их использовать дату в execution_date.Но задержка в 4,5 часа, вероятно, совсем не та, что вы имели в виду.
  • Видите ли, если каталоги данных можно было бы назвать по-другому, я сомневаюсь, что было бы хорошо, если бы другие люди или рабочие места полагались на них.
  • Воздушный поток также имеет next_execution_date, что в принципе даст вам тот же результат, что и добавление дня к execution_date.Но вам может понравиться форматированный макрос {{ next_ds }} для ваших нужд.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...