diff --git a/lib/reader.js b/lib/reader.js index 43e78d9d..a9437a05 100644 --- a/lib/reader.js +++ b/lib/reader.js @@ -93,8 +93,10 @@ class ParquetReader { let envelopeReader = await ParquetEnvelopeReader.openFile(filePath); try { - await envelopeReader.readHeader(); - let metadata = await envelopeReader.readFooter(); + let header = envelopeReader.readHeader(); + let metadataPromise = envelopeReader.readFooter(); + await header; + let metadata = await metadataPromise; return new ParquetReader(metadata, envelopeReader); } catch (err) { await envelopeReader.close(); @@ -220,6 +222,8 @@ class ParquetEnvelopeReader { columnData: {} }; + let requests = []; + for (let colChunk of rowGroup.columns) { const colMetadata = colChunk.meta_data; const colKey = colMetadata.path_in_schema; @@ -228,9 +232,17 @@ class ParquetEnvelopeReader { continue; } - buffer.columnData[colKey] = await this.readColumnChunk(schema, colChunk); + requests.push(this.readColumnChunk(schema, colChunk).then(payload => ({ + colKey, payload + }))); } + let data = await Promise.all(requests); + + data.forEach(d => { + buffer.columnData[d.colKey] = d.payload; + }); + return buffer; }