Other Iceberg implementations

Apache Iceberg Go is one of several official Iceberg implementations. Pick the one that matches your runtime; the table format and catalog protocols are the same across all of them.

ProjectLanguageRepositoryDocumentation
Apache IcebergJava (reference)apache/icebergiceberg.apache.org
PyIcebergPythonapache/iceberg-pythonpy.iceberg.apache.org
iceberg-rustRustapache/iceberg-rustrust.iceberg.apache.org
iceberg-cppC++apache/iceberg-cppcpp.iceberg.apache.org (early stage)

When to use which

  • Java is the reference implementation and is what every query engine integrates against (Spark, Flink, Trino, Hive, Presto, Dremio, etc.). If you are running a JVM workload, this is the canonical choice.
  • PyIceberg is for Python and the dataframe ecosystem (PyArrow, Pandas, Polars, DuckDB, Daft, Ray). Most data-science and ML workflows live here.
  • iceberg-rust is the Rust implementation, used by pyiceberg-core, DataFusion-based engines, and other Rust-native systems.
  • iceberg-cpp is early-stage (0.2.0 released 2026-01-26). Track the project for native C++ integration once it stabilizes.
  • iceberg-go (this project) is for Go services and tooling. Tight Apache Arrow Go integration makes it a good fit for streaming Arrow record batches into and out of Iceberg tables.

Specifications and shared concepts

The Iceberg spec, terminology, partitioning semantics, evolution semantics, REST Catalog OpenAPI, and multi-engine support policy live with the main project at iceberg.apache.org. All the implementations above target the same spec.

For Apache Iceberg Go-specific guidance, continue with the API Reference, CLI, or Configuration.