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

如何禁用Parquet.Net的DELTA_BINARY_PACKED编码?升级后文件无法被ParquetViewer读取

解决Parquet.Net 4.16.4生成文件无法被ParquetViewer读取的问题

Parquet.Net 4.16.x版本默认启用了DELTA_BINARY_PACKED编码,而ParquetViewer暂不支持该编码,导致读取时抛出错误。要解决这个问题,你需要在创建ParquetWriter时通过ParquetOptions禁用该编码,具体修改如下:

修改后的完整代码:

private async Task ParquetWriteRowGroup(ParquetSchema schema, List<dynamic> data)
{
    Console.WriteLine($"output file =>  {OutputFilePath}");
    using (Stream fs = File.Open(OutputFilePath, FileMode.CreateNew))
    {
        // 配置Parquet选项,禁用DELTA_BINARY_PACKED编码
        var parquetOptions = new ParquetOptions
        {
            UseDeltaBinaryPackedEncoding = false
        };

        // 将配置传入CreateAsync方法的重载版本
        using (ParquetWriter writer = await ParquetWriter.CreateAsync(schema, fs, parquetOptions))
        {
            writer.CompressionMethod = CompressionMethod.Snappy;

            using (ParquetRowGroupWriter groupWriter = writer.CreateRowGroup())
            {
                for (int i = 0; i < data.Count; i++)
                {
                    await groupWriter.WriteColumnAsync(new DataColumn(schema.DataFields[i], data[i]));
                }
            }
        }
    }
}

关键说明:

  • ParquetOptions需要作为参数传入ParquetWriter.CreateAsync的重载方法,而非在创建后的ParquetWriter实例上设置——该编码选项属于初始化配置,无法在writer创建后修改。
  • 禁用DELTA_BINARY_PACKED编码后,Parquet.Net会回退使用兼容的编码方式,生成的文件即可被ParquetViewer正常读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:42:41