public Task <bool> WriteTable(string fileId, ISessionWriter writer) { // This stream will be disposed by the sessionWriter var ms = new MemoryStream(); var dataColAndSchema = MakeDataColumnAndSchema(); using (var tableWriter = new Parquet.ParquetWriter(dataColAndSchema.Schema, ms)) { //tableWriter.CompressionMethod = Parquet.CompressionMethod.Gzip; using (var rowGroup = tableWriter.CreateRowGroup()) // Using construction assure correct storage of final rowGroup details in parquet file { foreach (var dataCol in dataColAndSchema.DataColumns) { rowGroup.WriteColumn(dataCol); } } } ms.Position = 0; writer.StoreFileId(ms, fileId); return(Task.FromResult(true)); }