如何使用dask读取S3上的CSV文件并传入access key、secret解决报错
问题原因与修复方案
核心错误原因
你遇到的报错本质是dask读取S3文件时拿到的路径不是预期的字符串格式,而是元组类型,90%以上的情况是路径格式化错误导致的:
- 你写的
s3://{bucket}/{file_key.csv}是普通字符串,没有加f前缀,不会自动替换bucket、file_key的变量值 .csv后缀错误写在了file_key的变量占位符内部,就算开启插值也会找不到匹配的变量名
修复步骤
第一步:修正路径写法
把路径改为f-string格式,调整.csv的位置:
aws_access_key_id = 'xxxx' aws_secret_access_key = 'xxxx' # 替换为你自己的bucket、file_key变量名,注意加f前缀 df = dd.read_csv( f's3://{bucket}/{file_key}.csv', storage_options = {'key': aws_access_key_id, 'secret': aws_secret_access_key} )
修改前先确认bucket和file_key两个变量本身是字符串类型,不是元组/列表。
第二步:解决版本兼容问题
如果修改路径后仍报错,是dask和S3依赖包的版本不匹配,升级对应依赖即可:
pip install --upgrade dask s3fs fsspec
第三步:可选配置补充
如果你用的是非AWS默认的S3服务(比如自建MinIO、AWS非标准区域),需要在storage_options里补充端点配置:
storage_options = { 'key': aws_access_key_id, 'secret': aws_secret_access_key, 'client_kwargs': {'endpoint_url': '替换为你的S3服务端点'} }
内容的提问来源于stack exchange,提问作者Jithendra Yenugula
相关产品推荐
相关产品推荐

