Skip to content

[EPIC] Production-quality native Iceberg writes #5649

Description

@andygrove

What is the problem the feature request solves?

Native Iceberg writes landed in three parts under #4322: the split writer/committer plan (#4658), the eligibility allowlist with fall-back reasons (#5298), and the iceberg-rust data-file writer with JVM-side manifest metrics (#5361). #4322 closed when #5361 merged, and no issue tracks what remains between "merged behind two off-by-default flags" and "production quality". The open follow-ups exist but are not linked to each other, and several gaps had no issue at all.

This epic is that plan. The goal is unchanged from #4322: an ETL job that scans, transforms, and writes Iceberg tables runs natively end to end, and falls back to iceberg-java wherever the native path cannot reproduce its outcome.

Current state. spark.comet.write.iceberg.splitOperator.enabled and spark.comet.iceberg.write.enabled both default to false. Nothing in CI runs with either flag on. Two correctness bugs are open on the native path. The user guide (iceberg-writes.md) still describes the writer as unimplemented in one section.

Describe the potential solution

Phased, in priority order. Each item is a linked issue; check it here when it closes.

Phase 1: correctness blockers

Phase 2: failure handling parity with iceberg-java

Phase 3: coverage so common workloads stay native

Phase 4: enable by default

Phase 5: performance

Ongoing

Additional context

Done and merged: #4658 (split-operator plan), #5298 (eligibility detection), #5361 (native writer). Related umbrellas: #5121 (DataSource V2 writes in general), #1625 (native Parquet writes for the V1 path).

The accepted divergences between iceberg-rust and iceberg-java output are documented in iceberg-writes.md; changes to that list belong in the issues above rather than here.

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