diff --git a/parquet/src/main/java/org/apache/iceberg/parquet/ParquetWriteAdapter.java b/parquet/src/main/java/org/apache/iceberg/parquet/ParquetWriteAdapter.java index 7fc0e695e376..7d31e0c223cc 100644 --- a/parquet/src/main/java/org/apache/iceberg/parquet/ParquetWriteAdapter.java +++ b/parquet/src/main/java/org/apache/iceberg/parquet/ParquetWriteAdapter.java @@ -25,19 +25,19 @@ import org.apache.iceberg.exceptions.RuntimeIOException; import org.apache.iceberg.io.FileAppender; import org.apache.parquet.hadoop.ParquetWriter; +import org.apache.parquet.hadoop.metadata.ParquetMetadata; public class ParquetWriteAdapter implements FileAppender { private ParquetWriter writer = null; - private long numRecords = 0L; + private ParquetMetadata footer = null; - public ParquetWriteAdapter(ParquetWriter writer) throws IOException { + public ParquetWriteAdapter(ParquetWriter writer) { this.writer = writer; } @Override public void add(D datum) { try { - numRecords += 1L; writer.write(datum); } catch (IOException e) { throw new RuntimeIOException(e, "Failed to write record %s", datum); @@ -46,7 +46,8 @@ public void add(D datum) { @Override public Metrics metrics() { - return new Metrics(numRecords, null, null, null); + Preconditions.checkState(footer != null, "Cannot produce metrics until closed"); + return ParquetMetrics.fromMetadata(footer); } @Override @@ -60,6 +61,7 @@ public long length() { public void close() throws IOException { if (writer != null) { writer.close(); + this.footer = writer.getFooter(); this.writer = null; } }