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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions