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

C#读取压缩格式Avro文件出现内容乱码及StackOverflowException异常

C#读取Snappy压缩Avro文件异常解决方案
  • 优先升级你使用的Apache.Avro Nuget包到1.11.0及以上稳定版本,低于该版本存在Snappy压缩解码的已知栈溢出Bug,会直接导致首条记录乱码、读取第二条记录时触发StackOverflowException异常。
  • 安装Snappy解码依赖:官方Avro库默认不携带Snappy解码器,你需要额外安装Snappy.Net Nuget包,同时确保运行环境对应的Snappy原生库和程序架构(x86/x64/Arm)匹配,Windows/Linux/macOS对应的原生二进制版本要对应操作系统版本。
  • 可通过读取器内置方法验证解码器是否正确加载,参考修改后的读取代码:
using Avro;
using Avro.File;
using Avro.Generic;

// 自动适配文件压缩格式读取
using (var reader = DataFileReader<GenericRecord>.OpenReader(path))
{
    // 输出当前文件使用的压缩编码,正常识别Snappy压缩文件时会输出snappy,输出null说明解码器未正确加载
    Console.WriteLine(reader.GetCodec().Name);
    
    foreach (var record in reader.NextEntries)
    {
        var name = record["username"].ToString();
        // 后续业务逻辑
    }
}
  • 若升级依赖后仍存在字段乱码问题,确认你读取使用的Schema和Avro文件内置的Schema一致,Schema字段顺序、类型不匹配也会导致Snappy压缩文件解码后字段值乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:36:04