Python使用awswrangler读取S3全部parquet文件出现HeadObject 404错误如何解决
404错误原因与修复方案
错误诱因
- 路径拼写错误:你代码中填写的桶名
buckte大概率为拼写失误,需先核对S3桶名、文件前缀路径是否真实存在 - 读取逻辑不匹配:你当前代码指定了单个固定文件路径,且将路径封装为单元素列表传入,无法匹配目标目录下所有
.parquet后缀的文件
修复方法
确认所有.parquet文件存放的S3公共前缀(例如s3://正确桶名/table/),可通过以下两种方式实现需求:
方式1:直接传入目录前缀(推荐)
wr.s3.read_parquet默认会自动遍历指定前缀下所有后缀为.parquet的文件,无需额外配置匹配规则:
import awswrangler as wr # 替换为你的parquet文件所在S3目录前缀,无需指定具体文件名 s3_prefix = "s3://<你的真实桶名>/table/" df = wr.s3.read_parquet(path=s3_prefix)
方式2:手动过滤文件列表后读取
如果需要做更精准的路径校验,可以先列出所有符合后缀的文件再传入读取:
import awswrangler as wr s3_prefix = "s3://<你的真实桶名>/table/" # 筛选出该前缀下所有后缀为.parquet的文件 parquet_paths = wr.s3.list_objects(path=s3_prefix, suffix=".parquet") df = wr.s3.read_parquet(path=parquet_paths)
额外排查项
如果修改路径后仍报错404,检查两项配置:
- 运行环境的IAM权限是否包含目标桶的
s3:ListBucket、s3:GetObject权限 - 确认目标S3路径下确实存在未被归档、删除的
.parquet格式文件
内容的提问来源于stack exchange,提问作者Cristián Vargas Acevedo
相关产品推荐
相关产品推荐

