Parquetendatei nicht richtig schreibenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Parquetendatei nicht richtig schreiben

Post by Anonymous »

Ich habe kürzlich Parquet.net auf Version 4.6.0 aktualisiert, was eine Menge der Methodenanrufe zu ihren asynchronen Versionen erfordert.

Code: Select all

        string file = @"c:\temp\test.parquet";
var dataFields = new DataField[2];
dataFields[0] = new DataField("dtUTC", DataType.Int64);
dataFields[1] = new DataField("val", DataType.Double);
var schema = new ParquetSchema(dataFields);
var dtUTC = new long[3];
var val = new double[3];

using (Stream fileStream = System.IO.File.OpenWrite(file))
{
using (var parquetWriterTask = ParquetWriter.CreateAsync(schema, fileStream))
{
parquetWriterTask.Wait();
var parquetWriter = parquetWriterTask.Result;
using (ParquetRowGroupWriter groupWriter = parquetWriter.CreateRowGroup())
{
var col0 = Array.CreateInstance(typeof(long), dtUTC.Length);
for(int i=0;i< dtUTC.Length;i++) col0.SetValue(dtUTC[i], i);
var writeT = groupWriter.WriteColumnAsync(new Parquet.Data.DataColumn(dataFields[0], col0));
writeT.Wait();
var col1 = Array.CreateInstance(typeof(double), val.Length);
for (int i = 0; i < val.Length; i++) col1.SetValue(val[i], i);
var writeT2 = groupWriter.WriteColumnAsync(new Parquet.Data.DataColumn(dataFields[1], col1));
writeT2.Wait();
}
}
}
< /code>
Wenn ich jedoch versuche, diese Datei zu lesen, entweder mit einer Drittanbieter -Anwendung oder meinem unten gezeigten Code, erhalte ich Fehler in der Zeile von < /p>

Das Ziel ist zu kurz. Der Stream < /p>
< /blockquote>
(abhängig davon, welche Anwendung ich zum Lesen der Datei verwendet) < /p>
Der Code, den ich zum Lesen verwenden, ist: < /p>
        using (Stream file = System.IO.File.OpenRead(fileName))
{
using (var readerTask = ParquetReader.CreateAsync(file))
{
readerTask.Wait();
var reader = readerTask.Result;
if (reader.RowGroupCount != 1) throw new Exception("reader.RowGroupCount = " + reader.RowGroupCount);
var dataFields = reader.Schema.GetDataFields();
using (var gr = reader.OpenRowGroupReader(0))
{
Parquet.Data.DataColumn[] columns = parquet.getCols(gr, dataFields);// dataFields.Select(gr.ReadColumn).ToArray();
output($"\tGroup 0: columns.Length={columns.Length}");
}
}
}
Was mache ich beim Schreiben dieser Parquetendatei falsch?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post