Polaris
Apache Polaris, the interoperable, open source catalog for Apache Iceberg
Install / Use
/learn @apache/PolarisREADME
Apache Polaris
Apache Polaris™ is an open-source, fully-featured catalog for Apache Iceberg™. It implements Iceberg's REST API, enabling seamless multi-engine interoperability across a wide range of platforms, including Apache Doris™, Apache Flink®, Apache Spark™, Dremio® OSS, StarRocks, and Trino.
Documentation is available at https://polaris.apache.org. The REST OpenAPI specifications are available here: Polaris management API doc and Polaris Catalog API doc.
Subscribe to the dev mailing list to join discussions via email or browse the archives. Check out the CONTRIBUTING guide for contribution guidelines.
Polaris Overview
Click here for a quick overview of Polaris.
Quickstart
Click here for the quickstart experience, which will help you set up a Polaris instance locally or on any supported cloud provider.
Project Structure
Apache Polaris is organized into the following modules:
- Primary modules:
polaris-core- The main Polaris entity definitions and core business logic- API modules - Build scripts for generating Java classes from the OpenAPI specifications:
polaris-api-management-model- Polaris Management API model classespolaris-api-management-service- Polaris Management API service classespolaris-api-iceberg-service- The Iceberg REST service classespolaris-api-catalog-service- The Polaris Catalog API service classes- Runtime modules:
polaris-admin- The Polaris Admin Tool; mainly for bootstrapping persistencepolaris-runtime-defaults- The runtime configuration defaultspolaris-distribution- The Polaris distributionpolaris-server- The Polaris Quarkus Serverpolaris-runtime-service- The package containing the Polaris service.polaris-runtime-spark-tests- Integration tests for the Polaris Spark pluginpolaris-runtime-test-common- Test utilities
- Persistence modules:
polaris-relational-jdbc- The JDBC implementation of BasePersistence to be used via AtomicMetaStoreManager
- Extensions modules:
polaris-extensions-federation-hadoop- The Hadoop federation extensionpolaris-extensions-federation-hive- The Hive federation extension
- Secondary modules:
agregated-license-report- Generates the aggregated license reportpolaris-bom- The Bill of Materials (BOM) for Polarispolaris-build-logic- Establishes consistent build logicpolaris-tests- Normative integration tests for reuse in downstream projects
- Tool modules:
- Documentation configuration:
polaris-config-docs-annotations- Annotations for documentation generatorpolaris-config-docs-generator- Generates Polaris reference docspolaris-config-docs-site- The configuration documentation site
- Other Tools:
polaris-container-spec-helper- Helper for container specificationspolaris-immutables- Predefined Immutables configuration & annotations for Polarispolaris-minio-testcontainer- Minio test containerpolaris-rustfs-testcontainer- RustFS test containerpolaris-misc-types- Miscellaneous types for Polarispolaris-version- Versioning for Polaris
- Documentation configuration:
In addition to modules, there are:
- API specifications - The OpenAPI specifications
- Python client - The Python client
- codestyle - The code style guidelines
- getting-started - A collection of getting started examples
- gradle - The Gradle wrapper and Gradle configuration files including banned dependencies
- helm - The Helm charts for Polaris.
- Spark Plugin - The Polaris Spark plugin
- regtests - Regression tests
- server-templates - OpenAPI Generator templates to generate the server code
- site - The Polaris website
Outside of this repository, there are several other tools that can be found in a separate Polaris-Tools repository.
Building and Running
Apache Polaris is built using Gradle with Java 21+ and Docker 27+.
./gradlew build- To build and run tests. Make sure Docker is running, as the integration tests depend on it../gradlew assemble- To skip tests../gradlew check- To run all checks, including unit tests and integration tests../gradlew run- To run the Polaris server locally; the server is reachable at localhost:8181. This is also suitable for running regression tests, or for connecting with Spark. Set your own credentials by specifying system property./gradlew run -Dpolaris.bootstrap.credentials=POLARIS,root,secretwhere:POLARISis the realmrootis the CLIENT_IDsecretis the CLIENT_SECRET- If credentials are not set, it will use preset credentials
POLARIS,root,s3cr3t
./regtests/run_spark_sql.sh- To connect from Spark SQL. Here are some example commands to run in the Spark SQL shell:
create database db1;
show databases;
create table db1.table1 (id int, name string);
insert into db1.table1 values (1, 'a');
select * from db1.table1;
env POLARIS_HOST=localhost ./regtests/run.sh- To run regression tests locally, see more options here.
Makefile Convenience Commands
To streamline the developer experience, especially for common setup and build tasks, a root-level Makefile is available. This Makefile acts as a convenient wrapper around various Gradle commands and other tooling, simplifying interactions. While Gradle remains the primary build system, the Makefile provides concise shortcuts for frequent operations like:
- Building Polaris components: e.g.,
make build-server, make build-admin - Managing development clusters: e.g.,
make minikube-start-cluster, make minikube-cleanup - Automating Helm tasks: e.g.,
make helm-doc-generate, make helm-unittest - Handling dependencies: e.g.,
make install-dependencies-brew - Managing client operations: e.g.,
make client-lint, make client-regenerate
To see available commands:
make help
For example, to build the Polaris server and its container image, you can simply run:
make build-server
More build and run options
Running in Docker
- To build the image locally:
./gradlew \ :polaris-server:assemble \ :polaris-server:quarkusAppPartsBuild --rerun \ -Dquarkus.container-image.build=true docker run -p 8181:8181 -p 8182:8182 apache/polaris:latest- To run the image.
The Polaris codebase contains some docker compose examples to quickly get started with Polaris,
using different configurations. Check the ./getting-started directory for more information.
Running in Kubernetes
- See README in
helm/polarisfor more information.
Configuring Polaris
Polaris Servers can be configured using a variety of ways. Please see the Configuration Guide for more information.
Default configuration values can be found in runtime/defaults/src/main/resources/application.properties.
Building docs
- Docs are generated using Hugo using the Docsy theme.
- To view the site locally, run
site/bin/run-hugo-in-docker.sh - See README in
site/for more information.
Publishing Build Scans to develocity.apache.org
Build scans of CI builds from a branch or tag in the apache/polaris repository on GitHub publish build scans
to the ASF Develocity instance at
[develocity.apache.org](https://develocity.apache
Related Skills
node-connect
337.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.2kCommit, push, and open a PR
