You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow使用GCS到GCS算子归档文件产生递归文件夹如何解决

问题原因

原来的配置中source_object='*.json'没有限制匹配范围,operator会递归扫描整个存储桶下所有后缀为.json的对象,包含Archive子目录下已经归档的文件。每次任务运行时都会把Archive目录内的json文件再次往Archive/路径下移动,最终形成无限嵌套的目录结构。

解决方案

有两种修改方式均可实现仅移动根目录下的json文件:

方案1:指定根目录匹配规则

修改source_object参数为/*.json,前缀斜杠表示仅匹配存储桶根目录下的json文件,不会命中子目录内的文件。
修改后的代码如下:

archive_files = GoogleCloudStorageToGoogleCloudStorageOperator(
    task_id='Archive_Files',
    source_bucket='my_data',
    source_object='/*.json',
    destination_bucket='my_data',
    destination_object='Archive/',
    move_object=True,
    google_cloud_storage_conn_id='connection1',
    dag=dag
)

方案2:添加目录分隔符限制递归

新增delimiter='/'参数,告知operator不要递归扫描子目录,仅在当前指定的根目录层级匹配对象。
修改后的代码如下:

archive_files = GoogleCloudStorageToGoogleCloudStorageOperator(
    task_id='Archive_Files',
    source_bucket='my_data',
    source_object='*.json',
    destination_bucket='my_data',
    destination_object='Archive/',
    move_object=True,
    delimiter='/',
    google_cloud_storage_conn_id='connection1',
    dag=dag
)
补充说明

如果你使用的是Airflow 2.x及以上版本,GoogleCloudStorageToGoogleCloudStorageOperator已更名为GCSToGCSOperator,上述参数配置逻辑完全兼容,直接替换类名即可正常使用。

内容的提问来源于stack exchange,提问作者arcee123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:45:03