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

如何使用Azure SDK for Python分块读取大Blob数据?

分块读取Azure Blob存储大文件的实现方案

要实现以300MB为分块迭代读取大Blob文件,核心是利用download_blob()返回的StorageStreamDownloader对象的chunks()方法,并通过参数指定自定义分块大小,替代readall()一次性加载全部内容。

关键调整说明

download_blob()方法支持通过max_chunk_get_size参数设置单次读取的分块大小(单位为字节),你需要将300MB转换为字节(30010241024 = 314572800)传入该参数,这样chunks()迭代器就会按指定大小返回数据块。

完整实现代码

from azure.storage.blob import BlobClient
import uuid
from azure.storage.blob import BlobBlock

# 初始化BlobClient(沿用你现有代码的初始化逻辑)
blob_client = BlobClient(blob_service_client.url,
                         container_name,
                         blob_name,
                         credential)

# 设置分块大小为300MB(单位:字节)
chunk_size = 300 * 1024 * 1024
# 获取下载流,指定自定义分块大小
data_stream = blob_client.download_blob(max_chunk_get_size=chunk_size)

# 迭代处理每个分块
block_list = []
for chunk in data_stream.chunks():
    # 这里添加你的数据处理逻辑,比如解析、转换等
    # 示例:如果需要将分块上传到另一个Blob(对应你提供的代码片段)
    block_id = str(uuid.uuid4())
    destination_blob_client.stage_block(block_id=block_id, data=chunk)
    block_list.append(BlobBlock(block_id=block_id))

# 如果是分块上传场景,最后提交块列表完成Blob上传
# destination_blob_client.commit_block_list(block_list)

注意事项

  • chunks()方法返回的每个chunk是字节数组,可直接用于数据处理或分块上传
  • 如果你的处理逻辑需要更灵活的分块控制,也可以在循环中对chunk进行二次拆分,但通常直接指定max_chunk_get_size更高效
  • 确保你的处理流程内存占用在可控范围内,300MB分块对应内存中会加载单个块的数据,符合你日常500MB的处理规模

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:05:21