Python3.7下用Polars读取S3 Parquet文件报TypeError求助
解决Python3.7下Polars读取S3 Parquet文件的报错问题
问题分析
你的代码在Python3.9正常运行,但Python3.7里报错,根源是旧版s3fs/aiobotocore不支持直接将AWS凭证参数作为顶层键传给AioSession。Python3.9环境用的是较新的库版本,支持直接传递aws_access_key_id这类参数,但Python3.7对应的库版本要求凭证参数必须嵌套在client_kwargs里。
修复方案
修改storage_options的结构,把AWS凭证放到client_kwargs字典中,代码如下:
import polars as pl storage_options = { "client_kwargs": { "aws_access_key_id": access_key, "aws_secret_access_key": secret_key, "aws_session_token": token } } lazyframe = pl.scan_parquet(read_path, storage_options=storage_options)
为什么这样改?
在Python3.7对应的旧版s3fs实现中,创建AioSession时不会直接处理顶层的AWS凭证参数,而是要求把这些参数传递给boto3客户端的配置项(也就是client_kwargs),这样s3fs才能正确把凭证传给底层的aiobotocore会话,避免触发参数不匹配的TypeError。
内容的提问来源于stack exchange,提问作者Kavya shree
相关产品推荐
相关产品推荐

