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

如何批量删除AWS S3多子文件夹中的Parquet文件?

AWS S3批量删除Parquet文件方案

方案b:AWS Glue作业Python脚本(优先推荐)

1. 遍历所有子文件夹删除所有Parquet文件

以下脚本会递归遍历指定存储桶下的所有路径,自动筛选并删除所有.parquet文件。Glue作业默认已集成boto3,无需额外安装依赖:

import boto3

def delete_parquet_files(bucket_name):
    s3 = boto3.client('s3')
    paginator = s3.get_paginator('list_objects_v2')
    
    # 分页遍历存储桶内所有对象
    page_iterator = paginator.paginate(
        Bucket=bucket_name
    )
    
    for page in page_iterator:
        if 'Contents' not in page:
            continue
        
        # 筛选出Parquet文件
        parquet_objects = [{'Key': obj['Key']} for obj in page['Contents'] if obj['Key'].endswith('.parquet')]
        
        if parquet_objects:
            # 批量删除(单次最多删除1000个对象)
            s3.delete_objects(
                Bucket=bucket_name,
                Delete={'Objects': parquet_objects}
            )
            print(f"Deleted {len(parquet_objects)} parquet files")

# 替换为你的存储桶名称
delete_parquet_files('your-bucket-name')

2. 指定固定结构子文件夹删除

如果只需要删除特定路径结构下的Parquet文件(例如s3://bucket-name/year=*/month=*/),只需修改分页查询的Prefix参数,精准定位目标路径:

import boto3

def delete_parquet_in_prefix(bucket_name, prefix):
    s3 = boto3.client('s3')
    paginator = s3.get_paginator('list_objects_v2')
    
    page_iterator = paginator.paginate(
        Bucket=bucket_name,
        Prefix=prefix
    )
    
    for page in page_iterator:
        if 'Contents' not in page:
            continue
        
        parquet_objects = [{'Key': obj['Key']} for obj in page['Contents'] if obj['Key'].endswith('.parquet')]
        
        if parquet_objects:
            s3.delete_objects(
                Bucket=bucket_name,
                Delete={'Objects': parquet_objects}
            )
            print(f"Deleted {len(parquet_objects)} parquet files under {prefix}")

# 替换为你的存储桶和目标前缀(支持通配符匹配固定结构)
delete_parquet_in_prefix('your-bucket-name', 'year=*/month=*/')

方案a:AWS CLI批量删除

1. 删除存储桶内所有Parquet文件

直接递归遍历并删除所有.parquet文件:

aws s3 rm s3://your-bucket-name/ --recursive --exclude "*" --include "*.parquet"

2. 指定前缀路径删除

如果只需要删除特定子文件夹下的文件,添加路径前缀即可:

aws s3 rm s3://your-bucket-name/target-folder/ --recursive --exclude "*" --include "*.parquet"

另一种方式是利用s3 sync命令,通过同步空本地文件夹实现删除:

# 先创建空文件夹
mkdir empty-folder
# 同步空文件夹到目标S3路径,删除所有匹配的Parquet文件
aws s3 sync empty-folder s3://your-bucket-name/target-folder/ --delete --exclude "*" --include "*.parquet"
# 删除本地空文件夹
rmdir empty-folder

内容的提问来源于stack exchange,提问作者P.Max

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:20:27