使用Apache Airflow将文件从一个Google Cloud Storage Bucket复制到其他文件

时间:2017-11-23 10:12:41

标签: google-cloud-platform google-cloud-storage airflow gcp apache-airflow

问题:我想将Google Cloud Storage Bucket中的文件夹(例如Bucket1中的Folder1)中的文件复制到另一个Bucket(例如Bucket2)。我找不到任何用于Google云端存储的Airflow Operator来复制文件。

3 个答案:

答案 0 :(得分:0)

我刚刚在2小时前上传的contrib中找到了一个新的运算符:https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/operators/gcs_to_gcs.py名为GoogleCloudStorageToGoogleCloudStorageOperator,它应该将一个对象从一个存储桶复制到另一个存储区,并在需要时进行重命名。

我今天将对其进行测试,并将更新此评论是否有效。

答案 1 :(得分:0)

我知道这是一个老问题,但我也发现自己也正在处理此任务。由于我使用的是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>'
        )

非常简单,可以根据需要创建文件夹并重命名文件。

答案 2 :(得分:0)

您可以使用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
)