Воздушный поток не может найти файл json - PullRequest
1 голос
/ 25 марта 2020

У меня есть следующая структура в моем процессе Aitflow:

dags/mainDag.py
dags/BigQuery/deleteData.py
dags/BigQuery/insertData.py
dags/support/gcp.json
dags/support/__init__py

Мой mainDag.py вызывает deleteData.py и insertData.py, и это работает! Но моя проблема: в этих обоих файлах я использую gcp.json следующим образом:

credentialsPath = "~/airflow/dags/support/gqp.json"
bigqueryClient = bigquery.Client.from_service_account_json(credentialsPath)

И в веб-сервере Airflow у меня была эта ошибка:

FileNotFoundError: [Errno 2] Нет такого файла или каталога: '~ / airflow / dags / support / gqp. json'

Но я могу отследить содержимое файла на моем bash, используя этот путь успешно. Я прочитал эти два вопроса в стеке, [ airflow: как я могу поместить метод для чтения файла json в локальной библиотеке и [ Airflow - Python файл НЕ в одном файле Папка DAG но ни одна не работает! Кто-нибудь знает, как это решить?

1 Ответ

0 голосов
/ 25 марта 2020

Если вы попытаетесь:

import os
credentialsPath = "~/airflow/dags/support/gqp.json"
print(os.path.isfile(credentialsPath))

Вы увидите, что на выходе будет False. Это потому, что python не расширяет ~ до вашего домашнего каталога пользователя. Вы можете сделать это, используя функцию os.path.expanduser:

import os
credentialsPath = os.path.expanduser("~/airflow/dags/support/gqp.json")
print(os.path.isfile(credentialsPath))

Теперь, это выдаст True, поскольку путь к файлу был расширен с помощью вашего домашнего каталога.

...