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

使用Polars df.write_delta()对接LocalStack S3存储时遇错误

问题分析

使用Polars的df.write_delta()方法将Delta表写入AWS LocalStack时出现错误,但相同配置的boto3可正常列出存储桶和对象。

调用代码

df.write_delta(
        target=s3_path,
        mode="overwrite",
        overwrite_schema=True,
        storage_options={
            "AWS_REGION": "eu-central-1",
            "AWS_ACCESS_KEY_ID": "test",
            "AWS_SECRET_ACCESS_KEY": "test",
            "endpoint_url": "http://localhost:4566"
        }
    )

错误信息

File "/Users/x/Library/Caches/pypoetry/virtualenvs/batch-orZCP5o2-py3.11/lib/python3.11/site-packages/deltalake/table.py", line 415, in __init__
    self._table = RawDeltaTable(
                  ^^^^^^^^^^^^^^
OSError: Generic S3 error: Error after 0 retries in 5.416µs, max_retries:10, retry_timeout:180s, source:builder error for url (http://localhost:4566/my_bucket/my_key/_delta_log/_last_checkpoint)
解决方案

问题根源在于storage_options中的参数名不匹配。Polars的write_delta()依赖deltalake库,该库要求S3端点的参数名为AWS_ENDPOINT_URL(而非boto3使用的endpoint_url)。修改存储选项参数即可解决问题:

df.write_delta(
        target=s3_path,
        mode="overwrite",
        overwrite_schema=True,
        storage_options={
            "AWS_REGION": "eu-central-1",
            "AWS_ACCESS_KEY_ID": "test",
            "AWS_SECRET_ACCESS_KEY": "test",
            "AWS_ENDPOINT_URL": "http://localhost:4566"  # 修改参数名
        }
    )

若修改后仍存在问题,可额外添加S3_ALLOW_UNSAFE_RENAME: "true"参数,确保LocalStack环境下的文件操作权限:

storage_options={
    "AWS_REGION": "eu-central-1",
    "AWS_ACCESS_KEY_ID": "test",
    "AWS_SECRET_ACCESS_KEY": "test",
    "AWS_ENDPOINT_URL": "http://localhost:4566",
    "S3_ALLOW_UNSAFE_RENAME": "true"
}
补充说明

deltalake库的存储选项命名规则与boto3不完全一致,所有AWS相关配置参数均以AWS_前缀开头,例如:

  • AWS_ACCESS_KEY_ID(对应boto3的aws_access_key_id)
  • AWS_SECRET_ACCESS_KEY(对应boto3的aws_secret_access_key)
  • AWS_ENDPOINT_URL(对应boto3的endpoint_url)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:56:04