Skip to content

Add a native Iceberg write benchmark #5647

Description

@andygrove

What is the problem the feature request solves?

The only performance numbers for native Iceberg writes are the ad hoc measurements in the #5361 description (2.9x unpartitioned, 5.5x partitioned fanout, from a harness in a personal fork). There is no benchmark in the repository, so a regression in the writer, in the shuffle feeding it, or in the JVM metrics rebuild would not be noticed, and the partitioned number was measured with write.distribution-mode=none rather than the default plan shape.

Describe the potential solution

Add a Spark benchmark (the org.apache.spark.sql.benchmark framework used by CometReadBenchmark and the shuffle benchmark) that measures INSERT INTO ... SELECT into an Iceberg table for:

Each case runs Spark, Comet scan only, and Comet scan plus native write, so the writer's contribution is isolated the way the #5361 table did. Wire it into the benchmark targets in the Makefile and document how to run it. Follow-on: run it on the EC2 benchmark runner and keep results with the other benchmark files.

Keep the Spark benchmark framework's warmup and minimum-time floors in mind when sizing the data (see the shuffle benchmark work in #5388 for how that dominated wall clock).

Additional context

Part of the native Iceberg writes epic, #5649. Related: #5361, #3595 (fused sort plus write, which this benchmark would measure).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions