Apache Polaris is an open-source catalog implementation for Apache Iceberg that provides a fully-featured REST API-based solution for managing Iceberg metadata. By implementing Iceberg's REST API specification, Polaris enables seamless multi-engine interoperability across diverse platforms including Apache Doris, Apache Flink, Apache Spark, Dremio OSS, StarRocks, and Trino. This interoperability is a core design principle, allowing different compute engines to work with the same underlying data catalog without vendor lock-in.
The repository is written primarily in Java and organized into several logical module groups. The Core module contains entity definitions and core business logic, while the API modules are generated from OpenAPI specifications and include the Management API, Iceberg REST service, and Catalog API. The Runtime group provides the Quarkus-based server implementation, an admin tool for bootstrapping persistence, service packaging, and default configuration. The Persistence layer includes JDBC implementations, and Extensions support catalog federation with systems like Hive, Hadoop, and BigQuery, as well as external authorization through OPA and Ranger.
The project structure reflects a mature, modular architecture with dedicated tooling and build support modules. These include a Bill of Materials for dependency management, shared build logic, versioning utilities, and test containers for MinIO, RustFS, and HMS. The repository also includes a Python client library, a Spark plugin for direct integration, Helm charts for Kubernetes deployment, and comprehensive documentation built with Hugo and the Docsy theme. Regression tests and integration tests are organized separately to ensure quality across different deployment scenarios.
Building and running Polaris requires Java 21 or later and Docker 27 or later. The project uses Gradle as its build system with multiple convenience commands for different tasks. Developers can run the Polaris server locally on port 8181, execute integration tests that depend on Docker containers, or skip tests entirely with the assemble target. The repository provides Makefile convenience commands for building server and admin components, managing local Minikube clusters, working with Helm charts, and maintaining the Python client. Docker and Kubernetes deployment options are fully supported, with docker-compose examples and Helm charts included for various configurations.
The codebase is actively maintained as an Apache Software Foundation project with a development mailing list for community engagement and a CONTRIBUTING guide for potential contributors. Configuration is flexible and can be customized through multiple mechanisms, with default values documented in the application properties file. The project publishes build scans to the ASF Develocity instance for branch and tag CI runs, enabling performance analysis and build optimization. All code is licensed under the Apache License Version 2.0, making it suitable for both open-source and commercial use cases within the lakehouse and data platform ecosystem.