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

升级ADLS Gen2后,ADF数据流创建的Blob提交块数为0的问题求助

问题分析与解决方案
  • ADF数据流在ADLS Gen2下的写入机制差异
    升级到ADLS Gen2启用分层命名空间后,ADF数据流写入文件时,并没有走标准块Blob的分块上传流程,而是直接以整文件写入的方式生成Blob。虽然存储管理界面标记它为「Block blob」,但实际不会保留块列表信息,所以调用GetBlockListAsync会返回0条已提交块。

  • 验证Blob的实际块信息
    可以用Azure存储资源管理器查看该Blob的详细属性,确认是否存在块列表。如果没有,就说明是ADF数据流在ADLS Gen2环境下的写入逻辑导致的,并非Bug。

  • 无需依赖块列表的替代读取方式
    如果业务不需要操作单个块,直接读取完整Blob内容即可,修改后的代码如下:

string connectionString = "";
string containerName = "test";
string blobName = "test.json";

BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
BlobClient blobClient = containerClient.GetBlobClient(blobName);

// 直接读取Blob完整内容
using (var stream = new MemoryStream())
{
    await blobClient.DownloadToAsync(stream);
    stream.Position = 0;
    using (var reader = new StreamReader(stream))
    {
        string content = await reader.ReadToEndAsync();
        Console.WriteLine(content);
    }
}
  • 必须操作块的解决办法
  1. 替换ADF数据流为复制活动写入Blob,复制活动在ADLS Gen2中会保留块列表信息。
  2. 数据流写入完成后,通过Azure函数或自定义代码重新分块上传该Blob,生成块记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:32:10