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

使用SAS从Azure Data Lake读取sklearn模型触发UnicodeDecodeError如何解决

问题原因

joblib的load()方法默认优先把传入的参数判定为本地文件路径字符串,你传入从Azure Blob下载得到的二进制字节内容后,load()会尝试将其作为路径字符串用UTF-8解码,而joblib模型文件本身是二进制序列化格式,包含大量非UTF-8编码的字节,因此触发解码报错。

解决方案

不需要额外写入本地磁盘,只要把二进制字节内容包装为BytesIO类文件对象,再传给load()即可,修改后的代码如下:

from io import BytesIO
from azure.storage.blob import BlobClient
from joblib import load

SAS_URL  = "https://XXXX"
blob_client = BlobClient.from_blob_url(SAS_URL)
downloader = blob_client.download_blob()
# 读取二进制内容并包装为BytesIO对象
model_bytes = downloader.readall()
loaded_model = load(BytesIO(model_bytes))

如果有本地存储的需求,也可以先将模型文件下载到本地路径,再传入路径字符串到load()方法读取,代码如下:

from azure.storage.blob import BlobClient
from joblib import load

SAS_URL  = "https://XXXX"
blob_client = BlobClient.from_blob_url(SAS_URL)
# 下载到本地文件
with open("local_model.joblib", "wb") as f:
    blob_client.download_blob().readinto(f)
# 从本地路径加载
loaded_model = load("local_model.joblib")

内容的提问来源于stack exchange,提问作者Luis Ramon Ramirez Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:57:03