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

使用DuckDB向Azure存储写入Parquet文件时遇未实现错误求助

解决DuckDB写入Azure Blob Parquet文件的报错问题

报错Not implemented Error: Writing to HTTP files not implemented的核心原因是:DuckDB的httpfs扩展仅支持通过HTTPS协议读取对象存储文件,但写入操作需要使用Azure Blob存储的专用访问方式,而非普通HTTPS URL。

修正步骤

  • 配置Azure存储账户的访问凭证(账户密钥或SAS令牌),确保DuckDB拥有写入Blob容器的权限
  • 使用azure://<容器名>.<存储账户名>.blob.core.windows.net/格式的专用路径,替代原HTTPS URL

修正后的代码示例

import duckdb

# 替换为你的Azure存储账户信息
azure_account_name = "somename"
azure_account_key = "你的存储账户访问密钥"
container_name = "the-conatiner-name"

# 用DuckDB支持的Azure专用路径格式
csv_path = f"azure://{container_name}.{azure_account_name}.blob.core.windows.net/the_csv.csv"
parquet_output_path = f"azure://{container_name}.{azure_account_name}.blob.core.windows.net/ParquetFile.parquet"

conn = duckdb.connect()
conn.execute('install httpfs') 
conn.execute('load httpfs')

# 配置Azure存储访问凭证
conn.execute(f"SET azure_storage_account='{azure_account_name}'")
conn.execute(f"SET azure_storage_access_key='{azure_account_key}'")

# 读取CSV到临时表
conn.execute(f"""
CREATE OR REPLACE TABLE some_table AS
SELECT *
FROM '{csv_path}'
LIMIT 10
""")

# 写入Parquet到Azure Blob容器
conn.execute(f"COPY some_table TO '{parquet_output_path}' (FORMAT 'parquet')")

补充说明

  • 若不想暴露账户密钥,可改用SAS令牌替代凭证配置:
    sas_token = "你的SAS令牌(注意不要带开头的?)"
    conn.execute(f"SET azure_storage_sas_token='{sas_token}'")
    
  • 确保所用凭证拥有Blob容器的写入权限(如Storage Blob Data Contributor角色)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:22:12