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

使用ChoETL读取Azure Blob存储中Parquet数据时抛出异常求助

ChoETL读取Azure Blob中Parquet文件的异常修复方案

问题描述

使用ChoETL库读取Azure Blob存储内的Parquet文件时,在初始化ChoParquetReader的代码行抛出ArgumentNullException(提示参数stream不能为空)。

原始代码

BlobServiceClient blobServiceClient = new BlobServiceClient(azureStorage);
BlobContainerClient container = blobServiceClient.GetBlobContainerClient(contenedor);
var blobs = container.GetBlobs().Where(x => x.Name.Contains(".parquet"));

try
{
    foreach (var item in blobs)
    {
        var blob = container.GetBlobClient(item.Name);
        await blob.OpenReadAsync();
        // 尝试按官方文档读取Parquet文件
        foreach (dynamic e in new ChoParquetReader(outStream))
        {
            Console.WriteLine("Id: " + e.Id + " FormNumber: " + e.FormNumber);
        }
    }
}
catch (Exception ex)
{
    throw ex;
}

异常原因

代码中await blob.OpenReadAsync();仅调用方法但未将返回的流赋值给outStream,导致outStream为null,传递给ChoParquetReader时触发空参数异常。

修复方案

  1. 接收OpenReadAsync返回的流对象,并用using语句自动管理流资源,避免资源泄漏
  2. 将有效流实例传入ChoParquetReader

修复后的完整代码

BlobServiceClient blobServiceClient = new BlobServiceClient(azureStorage);
BlobContainerClient container = blobServiceClient.GetBlobContainerClient(contenedor);
var blobs = container.GetBlobs().Where(x => x.Name.Contains(".parquet"));

try
{
    foreach (var item in blobs)
    {
        var blob = container.GetBlobClient(item.Name);
        // 接收流并使用using自动释放资源
        using (var stream = await blob.OpenReadAsync())
        {
            // 传入有效流实例初始化ChoParquetReader
            foreach (dynamic e in new ChoParquetReader(stream))
            {
                Console.WriteLine("Id: " + e.Id + " FormNumber: " + e.FormNumber);
            }
        }
    }
}
catch (Exception ex)
{
    throw ex;
}

额外注意事项

  • 确保Parquet文件结构与代码中访问的Id、FormNumber字段匹配,避免后续出现字段不存在的异常
  • 若Blob存储需要特殊权限,需确保BlobServiceClient已配置正确的访问凭据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:25:12