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

使用azure-storage-blob 12.12.0写入DataFrame至Azure Blob报错排查

代码错误说明

代码存在两处核心问题,直接触发初始化报错、无法完成写入:

  • BlobClient构造参数传递错误:该类初始化仅接收存储端点、容器名、Blob名、身份凭证等连接配置参数,不存在account_key这个入参,账号密钥需要传给credential参数;同时待上传数据不属于初始化参数,上传动作需要调用实例的upload_blob方法完成。将存储CSV内容的output变量作为位置参数传入构造函数,会直接触发参数不匹配错误。
  • 上传内容类型不符合SDK要求:df.to_csv()默认返回字符串类型,azure-storage-blob 12.x版本上传接口要求传入字节类型数据,即便修正初始化逻辑,直接传入字符串也会触发类型错误,需要提前转换为UTF-8编码的字节流。
适配azure-storage-blob==12.12.0的可运行代码
from azure.storage.blob import BlobClient
import pandas as pd

# 构造测试DataFrame
head = ["col1" , "col2" , "col3"]
l = [[1 , 2 , 3],[4,5,6] , [8 , 7 , 9]]
df = pd.DataFrame(l, columns=head)

# 将DataFrame转为CSV格式字节流,适配SDK上传要求
csv_data = df.to_csv(index_label="idx", encoding="utf-8").encode("utf-8")

# 配置存储账号信息
account_url = "https://<你的存储账号名>.blob.core.windows.net/"
account_key = "<你的存储账号访问密钥>"
container_name = "mycontainer"
blob_name = "test3.csv"

# 正确初始化BlobClient
blob_client = BlobClient(
    account_url=account_url,
    container_name=container_name,
    blob_name=blob_name,
    credential=account_key
)

# 调用上传方法完成写入,overwrite=True表示允许覆盖同名Blob
blob_client.upload_blob(csv_data, overwrite=True)

注意:如果Databricks环境已经通过集群配置、存储挂载等方式完成了对应Blob存储的身份授权,可以省略credential参数,不需要硬编码存储账号密钥。如果需要上传parquet、json等其他格式,只需要将DataFrame序列化为对应格式的字节流传入upload_blob即可,逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:21:46