Size: a a a

2021 February 10

PA

Panchenko Andrey in Airflow
zxyzxy
В вашем случае просто список таблиц куда-нибудь закиньте в конфиг файл, или например если нужно прям постоянно синхронизировать с таблицей из BQ, то тут предлагали такое решение - создать еще один даг, который будет забирать названия таблиц и складывать в переменную, а вы уже из этой переменной будете создавать свой даг который  складывает что-то в BQ
спасибо за разъяснение
источник

z

zxyzxy in Airflow
マキシム サモイロフ
не особо понял, что значит “что-то сделать” 🙂 если нужно просто асинхронно поднимать кучу контейнеров на кубах, то да, можно такое сделать.

есть немного разные вещи в концепции эйрфлоу — k8s executor и k8s operator.
первый заключается в том что запуск каждой джобы является запуском контейнера на кубовом кластере, и по коду дагов этого может быть даже не видно (даги могут не знать, где запускаются таски, и не должны в общем-то). если есть какие-то случайного вида таски, которые нужно как-то бесконечно параллелить с помощью кубового кластера (типа как в гугле например), то это идеальный вариант.
второй — это явный запуск подов на кубах через операторы, это применимо только в случае если вам нужно разворачивать какую-то инфраструктуру, описывая эту инфраструктуру как даг. ну или у вас каждая таска уже имеет предсозданный образ, но это извращение кажется.

операторы — это “что и как сделать”, экзекьютор — это “где сделать что угодно”
А мы сейчас кажется пришли к такому решению - мы на композере сидим и там celery executor в k8s как основное решение. Так вот, самые простые операторы, как-то что-то запустить через апи, запустить джобу выполняются стандартными операторами. А уже "тяжелые" ворклоады выносим в образы и запускаем через GKEPodOperator
источник

マサ

マキシム サモイロフ... in Airflow
Panchenko Andrey
спасибо за разъяснение
при построении динамических дагов лучше всего руководствоваться правилом: даг должен строиться без обращений к внешним сервисам, unless вы уверены в постоянной доступности, надежности ответов, сетевой связности и т.д.
источник

GB

Georgy Borodin in Airflow
Panchenko Andrey
опасно тем что например их может быть тысяча и это может повлиять на исполнение других дагов?
Не совсем, структура дага будет меняться постоянно. Такие вещи обычно разруливают версионностью (прямо меняют название дага <dag_id>_v<i>), но я советую просто поменять значение poll_process_interval на более подходящее, а под таблицу генерить даг.
Либо да, сделать даг, который будет бегать в BQ, записывать в переменную, что там есть, а затем динамически генерить даги на основе значения в Varaiable
источник

PA

Panchenko Andrey in Airflow
@georborodin @evervoid  спасибо ребята!!! хорошо когда есть у кого спросить более опытного :)
у меня насущный вопрос где можно с всеми этими практиками ознакомиться, или это все в доке написано?
источник

z

zxyzxy in Airflow
неистовый гуглеж
источник

PA

Panchenko Andrey in Airflow
куда без него))
источник

マサ

マキシム サモイロフ... in Airflow
В доке обычно такие вещи не написаны и познаются через опыт и боль)
источник

AA

Artem Andrienko in Airflow
Всем привет

А у airflow есть кэш дагов или что-то вроде этого? Собрал себе даг, он работал, всё хорошо. Потом поменял команду в операторе, а airflow, судя по логам, выполняет старую.

На веб-сервере в коде отображает правильную, на executor'е даг тоже обновил. Пользуюсь SSHOperator
источник

GB

Georgy Borodin in Airflow
Artem Andrienko
Всем привет

А у airflow есть кэш дагов или что-то вроде этого? Собрал себе даг, он работал, всё хорошо. Потом поменял команду в операторе, а airflow, судя по логам, выполняет старую.

На веб-сервере в коде отображает правильную, на executor'е даг тоже обновил. Пользуюсь SSHOperator
Скорее всего, даг лежит сериализованный в БД
источник

AA

Artem Andrienko in Airflow
Georgy Borodin
Скорее всего, даг лежит сериализованный в БД
О
А почему он не поменялся при изменении файла и как его принудительно почистить бы?
источник

GB

Georgy Borodin in Airflow
Artem Andrienko
О
А почему он не поменялся при изменении файла и как его принудительно почистить бы?
Ну во-первых это только догадка, а так тут всё написано https://airflow.apache.org/docs/apache-airflow/1.10.14/dag-serialization.html
источник

AA

Artem Andrienko in Airflow
Проверить я её все равно собираюсь, потому что своих идей особо нет =)
Спасибо, гляну
источник

VS

Vladislav 👻 Shishkov... in Airflow
Georgy Borodin
Скорее всего, даг лежит сериализованный в БД
Скорее всего нет
источник

VS

Vladislav 👻 Shishkov... in Airflow
Это проблема уникальности dag_id и его состояние в шедулере
источник

GB

Georgy Borodin in Airflow
Vladislav 👻 Shishkov
Это проблема уникальности dag_id и его состояние в шедулере
Темплейт команды будет рендериться старый? Мне казалось, что может подцепить изменения (но на себе не проверял, использую только питонячьи)
источник

VS

Vladislav 👻 Shishkov... in Airflow
будет старый, пока таймаут не пройдет, параметр перечитывания шедулером
источник

AA

Artem Andrienko in Airflow
Да, судя по конфигу, сериализацию у нас никто не включал
источник

GB

Georgy Borodin in Airflow
Artem Andrienko
Да, судя по конфигу, сериализацию у нас никто не включал
А poll_process_interval?
источник

VS

Vladislav 👻 Shishkov... in Airflow
сериализация есть только во второй вроде версии
источник