# Iceberg tables in Foundry [Apache Iceberg ↗](https://iceberg.apache.org/) is a widely adopted open-source specification and table format, available in Foundry as an alternative resource type for representing tabular data. This section explains what Iceberg tables are, how Foundry implements them, and how to build with them. ## What is Iceberg? Apache Iceberg provides an open table format that has gained significant traction in the data and analytics community, due to benefits around scalability, performance, and broad ecosystem support. In particular, the wide adoption of the Iceberg format and catalog specifications enables a broad array of integrations and interoperability across modern data ecosystems. The Apache Iceberg project includes the [Apache Iceberg specification ↗](https://iceberg.apache.org/spec/), as well as an ecosystem of engine connectors that support the Iceberg specification, such as [Spark ↗](https://iceberg.apache.org/docs/nightly/spark-getting-started/) and [Flink ↗](https://iceberg.apache.org/docs/nightly/flink/). Beyond the core project, a growing ecosystem of connectors and engines supports the format. [PyIceberg ↗](https://py.iceberg.apache.org/) provides a gateway into the Python ecosystem, and engines like [Trino ↗](https://trino.io/docs/current/connector/iceberg.html) and [PrestoDB ↗](https://prestodb.io/docs/current/connector/iceberg.html) offer native support. Third-party platforms such as [Databricks ↗](https://docs.databricks.com/aws/en/iceberg/) and [Snowflake ↗](https://docs.snowflake.com/en/user-guide/tables-iceberg) provide offerings built on top of it. ## Foundry Iceberg REST catalog Apache Iceberg defines an [Iceberg REST Catalog ↗](https://editor-next.swagger.io/?url=https://raw.githubusercontent.com/apache/iceberg/main/open-api/rest-catalog-open-api.yaml) specification, which outlines a set of endpoints and behaviors that a service must implement to function as an Iceberg REST catalog. By adhering to this specification, the service becomes compatible with a growing number of compute engines that support the Iceberg REST Catalog. Foundry natively implements this Iceberg REST Catalog specification, which enables third parties to integrate with Foundry's Iceberg catalog to read and write Foundry Iceberg tables. Foundry also supports connectivity to third-party Iceberg REST catalogs such as [Databricks Unity Catalog ↗](https://www.databricks.com/product/unity-catalog). See [Virtual tables: Iceberg catalogs](../../data-integration/virtual-tables/index.md#iceberg-catalogs) for supported third-party catalogs. Foundry exposes Iceberg catalog metadata explicitly as a JSON file in the dataset application under the **Details** tab, as shown in the screenshot below: ![The Iceberg catalog metadata JSON file displayed in the dataset application.](../../../assets/fc704f1073efd6bcbfe4b4c74841461e7a52b3f81160a2ada53a10b9a2a3b743.webp) ## Managed vs. virtual Iceberg tables Foundry offers Iceberg in two forms: * **Managed Iceberg tables** are administered by Foundry's own Iceberg catalog, and can be stored either in Foundry's managed storage bucket or in a customer-provided "bring your own" bucket. * **Virtual Iceberg tables** are [virtual tables](../../data-integration/virtual-tables/index.md) backed by external storage and managed by an external catalog such as Glue, Horizon, Polaris, or Unity. [Learn more about Iceberg storage options.](../storage/index.md) ## When to consider Iceberg tables Iceberg tables offer a number of unique benefits, including: * Optimized table layout via native maintenance procedures, including data compaction * Row edits such as `DELETE`, `UPDATE`, and `MERGE INTO` operations * Changelog-based incremental processing * Interoperability with an ecosystem of external engines and tools Not all [Foundry dataset](../../data-integration/datasets/index.md) functionality is currently supported with Iceberg tables. See [Iceberg tables vs. Foundry datasets](../iceberg-vs-datasets/index.md) for more detail on Iceberg support in Foundry and the differences versus catalog datasets. ## Getting started **Configure storage and encryption.** Before creating Iceberg tables, an administrator establishes where table data is stored and how it is encrypted. Start with the [storage architecture overview](../storage/index.md) to choose between Foundry-managed storage and bring-your-own-bucket, then [configure Iceberg settings in Control Panel](../iceberg-settings/index.md) to enable Iceberg and set enrollment-wide defaults or per-project overrides. If you are supplying your own bucket, follow the [bring-your-own-bucket setup guide](../iceberg-byob/index.md). **Build pipelines.** Foundry's `transforms-tables` library reads and writes Iceberg tables from Python transforms. The [Python transforms](../python-transform-basics/index.md) page provides an introduction to writing transforms with Iceberg. To process only what changed between runs rather than rewriting a table each build, consider using [changelogs and CDC](../changelogs/index.md). You can also read and write Iceberg tables using Foundry's [Pipeline Builder](../../pipeline-builder/overview/index.md) application. **Ingest and maintain data.** You can sync data into Iceberg tables directly from external systems with [Data Connection syncs](../syncs/index.md). Over time, tables may accumulate small files or a larger number of historical snapshots. You can schedule [maintenance tasks](../maintenance-page/index.md) such as compaction, snapshot expiration, and orphan file cleanup to optimize your tables. **Understand catalog behavior.** Foundry extends standard Iceberg with certain notable Foundry catalog features. [Transactions](../transactions/index.md) explains Foundry's all-or-nothing update semantics and maps Iceberg snapshot types to Foundry transaction types. [Branching](../branching/index.md) covers how Foundry builds provide branch isolation for schema, sort order, and partition-spec changes. [Properties](../properties/index.md) documents Foundry-specific table properties and defaults. **Connect external clients.** Because Foundry implements the Iceberg REST Catalog specification, engines outside Foundry can query your tables. Any external client needs two things: [authentication](../authentication/index.md) using either an API token or OAuth2, and [network access](../external-client-ingress/index.md) to both the REST catalog endpoint and the underlying storage bucket. For worked examples, see [connecting a local Jupyter® notebook](../local-jupyter/index.md) and [connecting Foundry's Iceberg catalog to Snowflake](../snowflake-iceberg-integration/index.md).