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