private void startRowGroup() {
    Preconditions.checkState(!closed, "Writer is closed");

    try {
      this.nextRowGroupSize = Math.min(writer.getNextRowGroupSize(), targetRowGroupSize);
    } catch (IOException e) {
      throw new RuntimeIOException(e);
    }
    this.nextCheckRecordCount = Math.min(Math.max(recordCount / 2, 100), 10000);
    this.recordCount = 0;

    PageWriteStore pageStore =
        pageStoreCtorParquet.newInstance(
            compressor, parquetSchema, props.getAllocator(), this.columnIndexTruncateLength);

    this.flushPageStoreToWriter = flushToWriter.bind(pageStore);
    this.writeStore = props.newColumnWriteStore(parquetSchema, pageStore);

    model.setColumnStore(writeStore);
  }
Returns the approximate length of the output file produced by this writer.

<p>Prior to calling {@link AdaptHiveParquetWriter#close}, the result is approximate. After
calling close, the length is exact.

@return the approximate length of the output file produced by this writer or the exact length
    if this writer is closed.
amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/iceberg/parquet/AdaptHiveParquetWriter.java