300+ Tools CoveredSource Data Updated Weeklydates

Apache Iceberg

Apache Iceberg is an open table format for huge analytic tables. It aims to bring the reliability and simplicity of SQL tables to big data.

Visit Apache Iceberg →
Type
Open Table Format

By Egor Burlakov · Edited · Source dates below

Buying snapshot

Scroll sideways to see all columns. With a keyboard, focus this table and use the arrow keys.

Decision pointWhat the Apache Iceberg project states

License

Apache-2.0 license. The project is under active development at the Apache Software Foundation.

How it is installed

As libraries added to your processing engine. The iceberg-core module is what processing engines should depend on. Spark and Flink integrations ship as runtime jars, a shaded version that avoids dependency conflicts.

Building from source

Built with Gradle on Java 17 or 21. The tests require Docker.

Language libraries

The core Java library is the reference implementation. Separate implementations exist for Go (iceberg-go), Python (PyIceberg), Rust (iceberg-rust) and C++ (iceberg-cpp).

Data files

Avro support is in iceberg-core. Optional modules add tables backed by Parquet or ORC files, and reading Parquet into Arrow memory.

Hive users

The iceberg-hive-metastore module backs Iceberg tables with the Hive metastore Thrift client, and iceberg-mr integrates with Apache Hive.

Our take

Choose Apache Iceberg if your analytic tables need to outlive any single engine and you have a platform team that will choose, run and upgrade the engines around it. If you want one product that stores, queries and operates your data for you, Iceberg is only one layer of that decision.

Evaluate Apache Iceberg

Comparisons

Where it stands out

  • Several engines on one table. The project states that engines like Spark, Trino, Flink, Presto, Hive and Impala can safely work with the same tables at the same time. Batch, streaming and SQL teams can share one copy of a dataset instead of keeping one per engine.

  • Schema changes without rewrites. Columns can be added, renamed and reordered, and the project states that schema changes never require rewriting your table. Adding a column won't bring back "zombie" data. This suits long-lived tables whose source systems change.

  • Hidden partitioning. Iceberg produces partition values for rows and skips unnecessary partitions and files, so queries need no extra filters. Table layout can be updated as data or queries change, so an early partition choice is not permanent.

  • Time travel and rollback. Queries can read an exact earlier table snapshot by version or timestamp, and version rollback resets a table to a good state. This helps when a pipeline writes bad data.

  • Row-level SQL changes. Iceberg supports SQL commands to merge new data, update existing rows and perform targeted deletes, such as MERGE INTO.

  • A stable specification. The Iceberg format specification is stable, and new features are added with each version, which matters for tables you expect to keep for years.

Trade-offs to weigh

  • You still choose and run the rest. Iceberg is a table format and a set of libraries that engines depend on. The query engine, storage and day-to-day operation remain separate decisions, each with its own cost and owner.

  • Engine version matching is your job. The Spark integration has submodules for each Spark version. The project's Multi-Engine Support page covers compatibility with Spark, Flink and Hive versions; for Presto or Trino it points you to those engines' own websites. Every engine you add is another compatibility matrix to test at upgrade time.

  • Update speed versus read speed is a choice you make. Iceberg can eagerly rewrite data files for read performance, or use delete deltas for faster updates. Teams need to pick per workload rather than rely on one default.

  • File layout needs upkeep. Data compaction is supported out of the box, with bin-packing or sorting strategies, but it runs as a procedure such as CALL system.rewrite_data_files. Someone has to decide when and how it runs.

Public signals

About these signals

Verified factual signals from public sources. They indicate observable activity or interest, not total adoption, product quality, or cost.

563 GitHub commits 90d9.4k GitHub stars0 vulnerabilities across 1 package

See all signals from 6 sources
Source
Signals
Last updated
GitHub
Commits 90d:563↑3Stars:9.4k↑20
October 26, 2026
PyPI
Weekly downloads:5.3M↓602.8k
October 26, 2026
Google Trends
Search interest:Top 66%overall↓0.04999999999999993Top 71%in Data Warehouse
October 26, 2026
Hacker News
Matching stories, 90d:7
October 26, 2026
Stack Overflow
Questions:312
October 26, 2026
OSV
Package vulnerabilities:0 vulnerabilitiesacross 1 package

PyPI · pyiceberg@0.12.0

October 26, 2026

Alternatives to Apache Iceberg

The reviewed substitutes for Apache Iceberg among the open table formats, and what would make each one the better answer.

Direct alternatives

Reviewed substitutes: products bought for the same job, where a team picks one.

Delta Lake
To get ACID tables, schema evolution and time travel on object storage, a team can adopt Apache Iceberg or Delta Lake. Delta Lake comes from Databricks and works most smoothly in Spark and Databricks. Iceberg is an Apache project with broad support across engines such as Trino, Flink and Snowflake.Applies to: Choosing between two products of the same kind for one job.
Apache Hudi
Apache Iceberg and Apache Hudi each turn files on cloud storage into reliable tables with transactions and schema changes. Iceberg puts the weight on engine-neutral tables that Spark, Trino, Flink and Snowflake can all read and write, with partition evolution. Hudi puts the weight on fast upserts and incremental processing for streaming pipelines.Applies to: Choosing between two products of the same kind for one job.

Related technologies

Normally used together rather than chosen between, so these are not alternatives.

Trino
Normally used together, not chosen between: Iceberg is the open table format on object storage and Trino is a query engine that reads it. Neither can be deployed instead of the other.
Explore all Apache Iceberg alternatives →

Sources