Можно ли в любом случае установить рабочий каталог в airflow, где будут выполняться мои коды? - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь помочь моей команде исследователей данных запустить их код с использованием воздушного потока.Проблема, с которой я столкнулся, заключается в том, что их скрипты Python будут читать / записывать некоторые промежуточные файлы.

1) Можно ли в любом случае установить рабочий каталог, в котором могут существовать их сценарии и файлы, чтобы он не загромождал папку dags?

2) даже если я использую папку dag, япридется указывать абсолютный путь каждый раз, когда я читаю / пишу эти файлы.если нет другого способа обойти это?

то есть мне придется делать это все время: -

absolute_path="/some/long/directory/path"    
f = os.path.join(absolute_path,file_name)

1 Ответ

0 голосов
/ 22 марта 2019

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

PATH_MODULES = "/home/airflow-worker-1/airflow_modules/"

sys.path += [ PATH_MODULES ]

Таким образом, я могу импортировать любые функции в этих папках (при условии, что они имеют __init__.py, потому что они обрабатываются как пакеты.

airflow_modules
    |_ code_repository_1
    |_ code_repository_2
    |_ code_repository_3
       |_ file_1.py
       |_ config.py

Итак, в вашем коде DAG вы используете:

from code_repository_1.data_cleaning       import clean_1
from code_repository_2.bigquery_operations import operation_1

Следует иметь в виду, что поскольку репозитории обрабатываются как проекты, так что если вам необходимо file_1.py импортировать переменную из config.py, то вы можете использовать относительный импорт с from .config import variable_1.

...