Проблема: я хочу скопировать файлы из папки в Google Cloud Storage Bucket (например, Folder1 в Bucket1) в другой Bucket (например, Bucket2). Я не могу найти оператора воздушного потока для облачного хранилища Google для копирования файлов.
Копирование файлов из одной корзины Google Cloud Storage в другую с помощью Apache Airflow
Ответы (3)
Я только что нашел нового оператора в contrib, загруженного 2 часа назад: https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/operators/gcs_to_gcs.py с именем GoogleCloudStorageToGoogleCloudStorageOperator
, который должен копировать объект из корзины в другую, с переименованием, если просил.
Я знаю, что это старый вопрос, но я тоже столкнулся с этой задачей. Поскольку я использую Google Cloud-Composer, GoogleCloudStorageToGoogleCloudStorageOperator
недоступен в текущей версии. Мне удалось решить эту проблему с помощью простого BashOperator
from airflow.operators.bash_operator import BashOperator
with models.DAG(
dag_name,
schedule_interval=timedelta(days=1),
default_args=default_dag_args) as dag:
copy_files = BashOperator(
task_id='copy_files',
bash_command='gsutil -m cp <Source Bucket> <Destination Bucket>'
)
Это очень просто, может создавать папки, если вам нужно, и переименовывать файлы.
Вы можете использовать GoogleCloudStorageToGoogleCloudStorageOperator
Приведенный ниже код перемещает все файлы из исходного сегмента в место назначения.
Пакет: https://airflow.apache.org/docs/stable/_api/airflow/contrib/operators/gcs_to_gcs/index.html.
backup_file = GoogleCloudStorageToGoogleCloudStorageOperator(
task_id='Move_File_to_backupBucket',
source_bucket='adjust_data_03sept2020',
source_object='*.csv',
destination_bucket='adjust_data_03sept2020_backup',
move_object=True,
google_cloud_storage_conn_id='connection_name',
dag=dag
)