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

如何高效可扩展计算ADLS Gen2文件夹大小并排除归档层Blob

解决ADLS Gen2文件夹大小计算(排除归档层Blob)的高效方案

针对百万级Blob规模的场景,推荐以下几种高效可扩展的实现方式:

1. 优化PowerShell命令(中小规模场景)

直接利用Get-AzStorageBlob返回的Blob属性进行过滤,无需额外API请求,性能优于逐个获取属性的方式:

# 初始化存储上下文
$ctx = New-AzStorageContext -StorageAccountName "your-storage-account" -StorageAccountKey "your-account-key"
$containerName = "target-container"
$folderName = "target-folder/" # 文件夹前缀需以斜杠结尾,确保匹配子目录

$totalSize = 0
# 获取指定前缀的Blob,过滤掉归档层后累加大小
Get-AzStorageBlob -Context $ctx -Container $containerName -Prefix $folderName | 
Where-Object { $_.AccessTier -ne "Archive" } | 
ForEach-Object { $totalSize += $_.Length }

Write-Host "排除归档层后的总大小:$totalSize 字节"

2. 优化Python代码(中小规模场景)

避免逐个Blob请求属性,通过list_blobs的include参数直接获取访问层信息,减少API调用次数:

from azure.storage.blob import BlobServiceClient

account_url = "https://your-storage-account.blob.core.windows.net"
storage_account_key = "your-account-key"
container_name = "target-container"
folder_path = "target-folder/"

blob_service_client = BlobServiceClient(account_url=account_url, credential=storage_account_key)
container_client = blob_service_client.get_container_client(container_name)

# 列表Blob时直接包含访问层信息,无需额外请求属性
blob_list = container_client.list_blobs(name_starts_with=folder_path, include=['tier'])

total_size = 0
for blob in blob_list:
    if blob.blob_tier != "Archive":
        total_size += blob.size

print(f"排除归档层后的总大小:{total_size} 字节")

3. 存储账户库存策略(超大规模场景,百万级Blob)

对于超大规模数据集,使用Azure存储账户的库存策略异步生成Blob清单,再分析计算大小:

  • 登录Azure门户,进入目标存储账户,在「数据管理」下找到「库存策略」
  • 创建新策略:指定目标容器、Blob类型,选择导出AccessTier和ContentLength(即Size)属性,设置导出路径(同一存储账户下的容器)
  • 等待库存生成(根据数据量可能需要1-24小时),导出的文件为CSV或Parquet格式
  • 用PowerShell、Python或数据分析工具读取文件,过滤掉AccessTier为Archive的记录,对ContentLength求和

这种方式无需遍历所有Blob,完全异步处理,适合超大规模场景,可扩展性极强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:50:17