Skip to main content

Overview

Project Nessie provides a Git-like experience for your data lake, bringing version control concepts to Apache Iceberg tables. With Nessie, you get:
  • Git-like operations: Create branches, tags, and commits
  • Multi-table transactions: Atomic changes across multiple tables
  • Time travel: Access historical states across the entire catalog
  • Isolated experimentation: Test changes in branches before merging
Nessie requires a separate server. See Project Nessie - Getting Started to set up a Nessie server.

Key Features

Branches

Create isolated environments for development, testing, and experimentation

Tags

Mark specific points in history for reproducibility and compliance

Multi-table Transactions

Atomically commit changes across multiple tables in a single operation

Merge & Cherry-Pick

Integrate changes between branches selectively

Configuration

Required Properties

Spark Configuration

Start Spark with Nessie catalog:

Java API

Working with Branches

Create a Branch

List Branches

Make Changes in a Branch

Merge Branches

Delete a Branch

Working with Tags

Create a Tag

Access Tagged State

Multi-table Transactions

Nessie enables loosely coupled multi-table transactions using branches:
While this provides atomic visibility of changes, each operation is still a separate Iceberg transaction. This is different from true ACID multi-table transactions.

Experimentation Workflow

Test schema changes or partition evolution safely:

Time Travel Across Catalog

View the entire catalog at a specific commit:

Nessie SQL Extensions

Nessie provides additional SQL commands for repository management:
For complete SQL syntax, see Nessie SQL Extensions.

Advanced Features

Cherry-Pick Commits

Selectively apply commits from one branch to another:

Namespace Enforcement

Nessie requires explicit namespace creation:
See Namespace Enforcement for details.

Table Maintenance

Table maintenance operations (expire snapshots, remove orphan files) require special consideration with Nessie to avoid data loss across branches.
Before running maintenance:
  1. Identify all active branches that reference the table
  2. Ensure snapshots used by any branch are not expired
  3. Consider using Nessie Management Services
See Nessie and Iceberg Maintenance for best practices.

Use Cases

Create a branch for each pipeline run, validate results, and merge only if tests pass:
Update fact and dimension tables atomically:
Maintain separate dev, staging, and prod branches:
Tag snapshots for regulatory requirements:

Client Tools

Nessie provides additional tools beyond SQL:

Comparison with Other Catalogs

Resources

Next Steps

Custom Catalog

Build your own catalog implementation

Table Maintenance

Learn about snapshot expiration and cleanup