Skip to main content
Integration with the Lakekeeper Catalog works with Iceberg tables only. This integration supports both AWS S3 and other cloud storage providers.
ClickHouse supports integration with multiple catalogs (Unity, Glue, REST, Polaris, etc.). This guide will walk you through the steps to query your data using ClickHouse and the Lakekeeper catalog. Lakekeeper is an open-source REST catalog implementation for Apache Iceberg that provides:
  • Rust native implementation for high performance and reliability
  • REST API compliance with the Iceberg REST catalog specification
  • Cloud storage integration with S3-compatible storage
As this feature is experimental, you will need to enable it using: SET allow_experimental_database_iceberg = 1;

Local Development Setup

For local development and testing, you can use a containerized Lakekeeper setup. This approach is ideal for learning, prototyping, and development environments.

Prerequisites

  1. Docker and Docker Compose: Ensure Docker is installed and running
  2. Sample Setup: You can use the Lakekeeper docker-compose setup

Setting up Local Lakekeeper Catalog

You can use the official Lakekeeper docker-compose setup which provides a complete environment with Lakekeeper, PostgreSQL metadata backend, and MinIO for object storage. Step 1: Create a new folder in which to run the example, then create a file docker-compose.yml with the following configuration:
Step 2: Run the following command to start the services:
Step 3: Wait for all services to be ready. You can check the logs:
The Lakekeeper setup requires that sample data be loaded into the Iceberg tables first. Make sure the environment has created and populated the tables before attempting to query them through ClickHouse. The availability of tables depends on the specific docker-compose setup and sample data loading scripts.

Connecting to Local Lakekeeper Catalog

Connect to your ClickHouse container:
Then create the database connection to the Lakekeeper catalog:

Querying Lakekeeper catalog tables using ClickHouse

Now that the connection is in place, you can start querying via the Lakekeeper catalog. For example:
If your setup includes sample data (such as the taxi dataset), you should see tables like:
If you don’t see any tables, this usually means:
  1. The environment hasn’t created the sample tables yet
  2. The Lakekeeper catalog service isn’t fully initialized
  3. The sample data loading process hasn’t completed
You can check the Spark logs to see the table creation progress:
To query a table (if available):
Backticks requiredBackticks are required because ClickHouse doesn’t support more than one namespace.
To inspect the table DDL:

Loading data from your Data Lake into ClickHouse

If you need to load data from the Lakekeeper catalog into ClickHouse, start by creating a local ClickHouse table:
Then load the data from your Lakekeeper catalog table via an INSERT INTO SELECT:
Last modified on June 12, 2026