Зависимости потока воздуха недоступны для дагса при работе Google Cloud Compose - PullRequest
0 голосов
/ 16 мая 2018

Airflow позволяет вам помещать зависимости (внешний код Python в код DAG), на которые полагаются Dag в папке DAG.это означает, что любые компоненты / члены или классы в этом внешнем коде Python доступны для использования в коде dag.

Однако при этом (в папке dag GCS в облачной среде создания) компоненты зависимостейнедоступно для дагс.в веб-интерфейсе Airflow отображается ошибка, похожая на следующую: Broken DAG: [/home/airflow/gcs/dags/....py] Нет модуля с именем tester.где tester - это отдельный файл python в папке dags.

при тестировании этих задач с использованием Google SDK (выполнение реальных команд Airflow) задачи выполняются нормально, но кажется, что где-то в Kubernettes при создании этих контейнерных заданий это не кажетсячтобы взять на себя зависимости тоже.

Я понимаю, что Cloud Compose находится в бета-версии, но мне было интересно, если я делаю что-то не так.

Ответы [ 4 ]

0 голосов
/ 19 июня 2018

У меня была та же проблема, и мне помогли решить ее в списке рассылки. Для справки смотрите ветку здесь: https://groups.google.com/forum/#!topic/cloud-composer-discuss/wTI7Pbwc6ZY. Там есть ссылка на удобный Github Gist с некоторыми комментариями к нему.

Чтобы написать и импортировать свои собственные зависимости в свои группы обеспечения доступности баз данных, вам понадобится архивировать свои пакеты и их зависимости, как описано здесь: https://airflow.apache.org/concepts.html?highlight=zip#packaged-dags.

Вы можете выгрузить этот zip-файл прямо в корзину Cloud Composer GCS, и Airflow его заберет.

Убедитесь, что ваши зависимости являются пакетами, а не модулями на верхнем уровне каталога dags.

from foo_dep.foo_dep import my_utility_function будет работать здесь:

foo_dag.py
foo_dep/__init__.py
foo_dep/foo_dep.py

from foo_dep import my_utility_function похоже, что он должен работать со следующей структурой каталогов dags (и будет работать локально), , но он не будет работать в Airflow :

foo_dag.py
foo_dep.py
0 голосов
/ 17 мая 2018

Вы ищете, как установить зависимости Python?https://cloud.google.com/composer/docs/how-to/using/installing-python-dependencies

Кроме того, папка DAGs, которая находится в вашем контейнере GCS (gcloud beta composer environments describe [environment], чтобы получить этот контейнер; gs: // {composer-bucket} / dags) должна отображаться в / home / airflow / gcs/ Dags в ваших стручках.Вы пробовали SSHing в узел, чтобы найти это?

0 голосов
/ 30 мая 2018

Вы должны поместить модуль в отдельную папку, содержащую файл __init__.py (Airflow не нравится файлы __init__.py в его каталоге DAGs верхнего уровня).

Например, если у вас следующая структура каталогов:

dags/
    my_dag.py
    my_deps/
        __init__.py
        dep_a.py
        dep_b.py

Вы можете написать from my_deps import dep_a, dep_b в my_dag.py.

0 голосов
/ 17 мая 2018

Из официальных документов по настройке Airflow:

При первом запуске Airflow он создаст файл с именем airflow.cfg в каталоге $ AIRFLOW_HOME (по умолчанию ~ / airflow).Этот файл содержит конфигурацию Airflow, и вы можете отредактировать ее, чтобы изменить любую из настроек

. В этом файле задается самый первый параметр

[core]
# The home folder for airflow, default is ~/airflow
airflow_home = /home/airflow/gcs/dags

базовый путь к Airflow.

...