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

使用Polars读取Delta数据帧时出警告但功能正常,求排查

问题描述

我在MinIO服务器中存储了Delta格式的数据,MinIO启动命令如下:

minio server --address :9010 --console-address :19010 ./data

使用Polars读取数据时,先出现约1秒延迟,随后弹出警告,但最终功能正常。警告信息如下:

2024-04-08T07:17:19Z WARN  aws_config::imds::region] failed to load region from IMDS err=failed to load IMDS session token: dispatch failure: timeout: error trying to connect: HTTP connect timeout occurred after 1s: HTTP connect timeout occurred after 1s: timed out (FailedToLoadToken(FailedToLoadToken { source: DispatchFailure(DispatchFailure { source: ConnectorError { kind: Timeout, source: hyper::Error(Connect, HttpTimeoutError { kind: "HTTP connect", duration: 1s }), connection: Unknown } }) }))
[2024-04-08T07:17:19Z WARN  aws_config::imds::region] failed to load region from IMDS err=failed to load IMDS session token: dispatch failure: io error: error trying to connect: tcp connect error: Host is down (os error 64): tcp connect error: Host is down (os error 64): Host is down (os error 64) (FailedToLoadToken(FailedToLoadToken { source: DispatchFailure(DispatchFailure { source: ConnectorError { kind: Io, source: hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 64, kind: Uncategorized, message: "Host is down" })), connection: Unknown } }) }))
[2024-04-08T07:17:19Z WARN  aws_config::imds::region] failed to load region from IMDS err=failed to load IMDS session token: dispatch failure: io error: error trying to connect: tcp connect error: Host is down (os error 64): tcp connect error: Host is down (os error 64): Host is down (os error 64) (FailedToLoadToken(FailedToLoadToken { source: DispatchFailure(DispatchFailure { source: ConnectorError { kind: Io, source: hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 64, kind: Uncategorized, message: "Host is down" })), connection: Unknown } }) }))

使用的代码:

import polars as pl

minio_storage_options = {
    "AWS_ENDPOINT_URL": "http://localhost:9010",
    "AWS_ACCESS_KEY_ID": "minioadmin",
    "AWS_SECRET_ACCESS_KEY": "minioadmin",
    "AWS_REGION": "<localhost>",  # Unused??
    "AWS_ALLOW_HTTP": "true",  # Required
}

df = pl.read_delta("s3://reddit-submissions/submissions-raw", storage_options=minio_storage_options)
print(df.head())

环境信息:

❯ uv pip freeze | grep "delta\|polars"
deltalake==0.16.4
polars==0.20.18
❯ python
Python 3.11.5 (main, Aug 24 2023, 15:09:45) [Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
问题原因与解决方法

这些警告和延迟是因为AWS SDK在尝试从EC2实例元数据服务(IMDS)加载区域信息,但当前环境并非AWS EC2,导致连接失败,产生1秒超时延迟和警告。

解决步骤:

  1. 修正AWS_REGION值:将AWS_REGION改为合法的AWS区域格式字符串(比如us-east-1),MinIO对区域值没有严格校验,但不能使用<localhost>这类无效值。
  2. 禁用IMDS查询:在storage_options中添加"AWS_EC2_METADATA_DISABLED": "true",直接阻止SDK访问IMDS,彻底消除延迟和警告。

修改后的代码:

import polars as pl

minio_storage_options = {
    "AWS_ENDPOINT_URL": "http://localhost:9010",
    "AWS_ACCESS_KEY_ID": "minioadmin",
    "AWS_SECRET_ACCESS_KEY": "minioadmin",
    "AWS_REGION": "us-east-1",
    "AWS_ALLOW_HTTP": "true",
    "AWS_EC2_METADATA_DISABLED": "true"
}

df = pl.read_delta("s3://reddit-submissions/submissions-raw", storage_options=minio_storage_options)
print(df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:03:16