Итак, что я делаю неправильно
Это это простой код для его проверки:
Код: Выделить всё
var fields = new List
{
new DataField("id"),
new DataField("city")
};
var schema = new ParquetSchema(fields);
Parquet.Data.DataColumn[] columns = new Parquet.Data.DataColumn[2];
for (int i = 0; i < 2; i++)
{
Type t = fields[i].ClrType;
//var allData = getData(dataTable, i);
columns[i] = t switch
{
Type when typeof(string) == t => new Parquet.Data.DataColumn(fields[i], new string?[] { "London", null}),/*"Derby" */
Type when typeof(int) == t => new Parquet.Data.DataColumn(fields[i], new int[] { 1, 2 }),
_ => throw new NotImplementedException(),
};
}
using (Stream fileStream = System.IO.File.OpenWrite("c:\\test.parquet"))
{
ParquetOptions parquetOptions = new ParquetOptions { TreatByteArrayAsString = true, UseDictionaryEncoding = true, UseDeltaBinaryPackedEncoding = false };
using (ParquetWriter parquetWriter = await ParquetWriter.CreateAsync(schema, fileStream, parquetOptions))
{
parquetWriter.CompressionMethod = CompressionMethod.Gzip;
parquetWriter.CompressionLevel = System.IO.Compression.CompressionLevel.Optimal;
// create a new row group in the file
using (ParquetRowGroupWriter groupWriter = parquetWriter.CreateRowGroup())
{
foreach (var item in columns)
{
await groupWriter.WriteColumnAsync(item);
}
}
}
}

Подробнее здесь: https://stackoverflow.com/questions/783 ... le-parquet