Как получить путь GCS к папке данных композитора

Мне нужно скопировать файлы с FTP-сервера в определенное место GCS. Я использую ftp_hook для загрузки файла в папку / data. Мне нужно переместить этот файл в другую корзину GCS вместо корзины Composer GCS.

Я пытаюсь использовать оператор GoogleCloudStorageToGoogleCloudStorageOperator для копировать файлы из корзины композитора в желаемую корзину. Для этого мне нужно прочитать ведро композитора в задаче Airflow. Я не хочу добавлять это как настраиваемую переменную, поскольку сам мой композитор создается динамически. Так как же получить информацию о корзине композитора, в которой находится моя папка данных?


person sag    schedule 16.07.2019    source источник
comment
Тогда не знаете, где выбрать название сегмента? Откуда вы хотите это прочитать? Вы хотите ввести его вручную или автоматически? Можете ли вы использовать GCS API?   -  person bosnjak    schedule 16.07.2019
comment
Я хочу прочитать это автоматически. Я могу использовать GCS API. Но с API GCS я не могу проверить, предназначена ли корзина для композитора или нет.   -  person sag    schedule 16.07.2019
comment
Привет, я только что обновил свой ответ, думаю, вам это поможет!   -  person Iñigo    schedule 17.10.2019


Ответы (1)


ОБНОВЛЕНИЕ:

Я только что обнаружил (возможно, это что-то новое), что вы можете получить доступ к переменной Env с помощью ведра. Это определяется автоматически в Composer.

COMPOSER_BUCKET = os.environ["GCS_BUCKET"]

ОРИГИНАЛ:

Я не уверен на 100%, хотите ли вы делать это динамически (т.е. тот же DAG будет работать в другом окружении Composer без каких-либо изменений), в любом случае, вот что я подумал:

  • (Нет динамически) Вы можете проверить сегмент, который Composer использует, щелкнув в среде, он должен находиться в «папке DAGs» (на самом деле это папка, в которой находятся DAG, просто выньте /dags)

  • (Динамически) Поскольку вы хотите скопировать файлы из Composer в GCS, вы можете использовать FileToGoogleCloudStorageOperator и используйте файл, который сопоставлен с Composer Bucket. Обратите внимание, что локальное хранилище и сегмент Composer сопоставлены друг с другом, поэтому путь доступа home/airflow/gcs/data/file1 будет «таким же», как gs://<bucket>/data/file1.

  • (Полудинамически) Вы можете использовать Composer API, чтобы получить сведения о среде и проанализировать корзину. Конечно, вам нужно будет заранее знать название, местоположение и проект.

Из этих трех я бы сказал, что тот, который использует FileToGoogleCloudStorageOperator, является самым чистым и простым.

person Iñigo    schedule 16.07.2019
comment
Да, FileToGoogleCloudStorageOperator - самый простой, и сейчас я использую его. Но он загружает файл с подключенного диска в gcs, что отнимает много времени по сравнению с GCSToGCS. Позвольте мне попробовать использовать Composer API, чтобы получить подробную информацию о среде - person sag; 16.07.2019