Воздушный поток: dag_id не может быть найден

Я запускаю сервер воздушного потока и рабочий на разных машинах AWS. Я синхронизировал эту папку dags между ними, запустил airflow initdb на обоих и проверил, что dag_id одинаковы, когда я запускаю airflow list_tasks <dag_id>

Когда я запускаю планировщик и воркер, я получаю эту ошибку у воркера:

airflow.exceptions.AirflowException: dag_id не может быть найден:. Либо дага не существовало, либо его не удалось разобрать. [...] Команда ...-- local -sd /home/ubuntu/airflow/dags/airflow_tutorial.py '

Проблема, по-видимому, в том, что указан неверный путь (/home/ubuntu/airflow/dags/airflow_tutorial.py), поскольку правильный путь - / home / hadoop / ...

На сервере это путь с ubuntu, но в обоих файлах конфигурации это просто ~/airflow/...

Что заставляет рабочего смотреть на этот путь, а не на правильный?

Как мне сказать, чтобы он смотрел в его собственном домашнем каталоге?

изменить:

  • Вряд ли это проблема конфигурации. Я запустил grep -R ubuntu, и единственные вхождения в журналы
  • Когда я запускаю то же самое на компьютере с ubuntu в качестве пользователя, все работает. Это наводит меня на мысль, что по какой-то причине воздушный поток предоставляет работнику полный путь к выполнению задачи.

person Dotan    schedule 05.04.2017    source источник
comment
У меня тоже возникла эта проблема. .--local -sd указывает неверный путь. Есть ли у вас еще какое-нибудь решение?   -  person DevEx    schedule 11.04.2017
comment
Я обнаружил ошибку в своем DAG. Я ошибочно импортировал модуль из другого каталога, теперь он решен.   -  person DevEx    schedule 11.04.2017


Ответы (4)


Добавление параметра --raw в команду airflow run помогло мне увидеть исходное исключение. В моем случае экземпляр базы данных метаданных работал слишком медленно, и загрузка дагов не удалась из-за тайм-аута. Я исправил это:

  • Обновление экземпляра базы данных
  • Увеличение параметра dagbag_import_timeout в airflow.cfg

Надеюсь это поможет!

person Michael Spector    schedule 14.06.2017
comment
если я добавлю '--raw', он действительно работает полностью и нормально, в противном случае возникает упомянутое исключение. Также путем обновления и увеличения тайм-аута var. - person miguelfg; 14.01.2019
comment
как вы могли бы сделать то же самое с воздушным потоком в кубернетах? - person alex; 24.08.2020

Я испытываю то же самое - рабочий процесс, похоже, передает аргумент --sd, соответствующий папке dags на компьютере планировщика, а не на рабочем компьютере (даже если dags_folder правильно установлен в файле конфигурации воздушного потока на рабочем компьютере). В моем случае мне удалось заставить все работать, создав символическую ссылку на хосте планировщика, так что dags_folder можно установить на то же значение. (В вашем примере это будет означать создание символической ссылки / home / hadoop -> / home / ubuntu на машине планировщика, а затем настройку dags_folder на / home / hadoop). Итак, это не совсем ответ на проблему, но в некоторых случаях это жизнеспособный обходной путь.

person gcbenison    schedule 25.08.2017
comment
Это происходит даже в сегодняшнем Kubernetes Executor, придется обновить базовый образ и создать символическую ссылку. таким образом его можно настроить так, чтобы он указывал на правильные дни - person user13424620; 29.06.2020

Вы пытались установить параметр dags_folder в файле конфигурации так, чтобы он явно указывал на / home / hadoop /, то есть на желаемый путь?

Этот параметр определяет место для поиска дагов.

person Priyank Mehta    schedule 06.04.2017

  1. измените dags_folder в airflow.cfg на нужный каталог
  2. используя para -sd при перечислении ваших задач воздушного потока, например airflow list_tasks yourDagName -sd / opt / airflow / dags

оба работали

person lesleyww    schedule 31.03.2021