我正在使用 Parquet.Net 库从 C# 代码生成 parquet 文件。 4.15.0 版本工作正常,但切换到最新的 4.16.4 后,生成的文件无法使用 ParquetViewer 读取。它抛出错误“DELTA_BINARY_PACKED”编码不受支持。我在网上发现可以使用 ParquetOptions 禁用此功能。但是,我无法找到此选项作为 ParquetWriter 方法的一部分。
这是代码片段
private async Task ParquetWriteRowGroup(ParquetSchema schema, List<dynamic> data)
{
Console.WriteLine($"output file => {OutputFilePath}");
using (Stream fs = File.Open(OutputFilePath, FileMode.CreateNew))
{
using (ParquetWriter writer = await ParquetWriter.CreateAsync(schema, fs))
{
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 options = new ParquetOptions();
options.UseDeltaBinaryPackedEncoding = false;
ParquetSerializerOptions serializerOptions = new ParquetSerializerOptions();
serializerOptions.ParquetOptions = options;
await ParquetSerializer.SerializeAsync(stuff, destination,
serializerOptions);