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

使用Dask读取私有S3存储Parquet时遇‘coroutine不可迭代’错误

解决Dask读取私有非AWS S3 Parquet文件时的coroutine object is not iterable错误

问题分析

你遇到的错误源于Dask底层依赖的fsspec库默认尝试使用异步S3客户端,但你的私有S3存储服务不兼容异步请求,或是环境中异步依赖缺失,导致返回协程对象而非可迭代的文件列表。另外你代码里的import dask as dd存在错误,正确导入应为dask.dataframe模块。

解决方案

1. 修正代码并强制使用同步客户端

调整代码如下,确保正确导入Dask DataFrame,并通过配置强制使用同步客户端:

import dask.dataframe as dd
dd.read_parquet(
    's3://ns1/data/key',
    storage_options={
        'key': '你的访问密钥',
        'secret': '你的密钥密码',
        'client_kwargs': {
            'endpoint_url': 'https://s3.sample-private-cloud.com',
            'use_ssl': True
        },
        'async': False  # 禁用异步模式,强制使用同步客户端
    },
    engine='pyarrow'  # 显式指定Parquet解析引擎,可选pyarrow或fastparquet
)

2. 安装完整依赖包

执行以下命令安装必要依赖:

pip install s3fs pyarrow

s3fs负责处理S3协议交互,pyarrow是Parquet文件的解析引擎(也可替换为fastparquet)。

3. 先验证S3连接

先用s3fs单独测试连接,排除存储配置问题:

from s3fs import S3FileSystem

fs = S3FileSystem(
    key='你的访问密钥',
    secret='你的密钥密码',
    client_kwargs={'endpoint_url': 'https://s3.sample-private-cloud.com'}
)

# 列出目标路径下的文件,确认能正常访问
print(fs.ls('ns1/data/key'))

如果这段代码能成功输出文件列表,说明存储配置无问题,再用Dask读取即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:15:04