我正在从一个大小大约为5 GB的blob中阅读数据。我通常处理大小为500 MB的数据。所以,我尝试在多次迭代中读取较小的数据块,例如300 MB。有没有一种方法可以完成这一点,而不是执行readall()
,而是以较小的增量读取数据?
blob_client = BlobClient(blob_service_client.url,
container_name,
blob_name,
credential)
data_stream = blob_client.download_blob()
data = data_stream.readall()
如何将下面的chunks与上面的BlobServiceClient
一起使用
# This returns a StorageStreamDownloader.
stream = source_blob_client.download_blob()
block_list = []
# Read data in chunks to avoid loading all into memory at once
for chunk in stream.chunks():
# process your data (anything can be done here really. `chunk` is a byte array).
block_id = str(uuid.uuid4())
destination_blob_client.stage_block(block_id=block_id, data=chunk)
block_list.append(BlobBlock(block_id=block_id))
1条答案
按热度按时间jv4diomz1#
我在我的环境中尝试,得到以下结果:
如何将下面的chunks与上面的
BlobServiceClient
一起使用代码:
若要上传每个区块,您可以使用**
BlobClient.stage_block
方法。上传之后,我们会使用BlobClient.commit_block_list
**方法将所有区块合并成单一Blob。控制台:
门户网站:
您还可以在两个容器之间引用另一个方法,用于Jim Xu编写的块SO-thread。