Skip to content

Config file reference

This page describes the different configuration options for Polars On-Prem. The config file is a standard TOML file with different sections. Any of the configuration can be overridden using environment variables in the following format: PC_CUBLET__section_name__key.

Example configuration files can be found at Example Configurations.

See the sidebar for extensive documentation on important components and their configuration together.

Top-level configuration

Key Type Description
cluster_id string Logical ID for the cluster; workers and scheduler that share this ID will form a single cluster.
e.g. prod-eu-1; must be unique among all clusters.
instance_id string Unique ID for this node within the cluster, used for addressing and leader selection.
e.g. scheduler, worker_0; must be unique per cluster.
license string Absolute path to the Polars On-Prem license file required to start the process. Shorthand for license.on_prem_enterprise.license_path.
e.g. /etc/polars/license.json. See License.
memory_limit integer Hard memory budget for all components in this node; enforced via cgroups when delegated.
e.g. 1073741824 (1 GiB), 10737418240 (10 GiB).

[license] section

The license key can be specified either as a string (shorthand for an enterprise license file path, see Top-level configuration) or as one of the sections below. See License for details.

Key Type Description
license.on_prem_enterprise object Offline licensing using a license file.
license.on_prem_enterprise.license_path path Absolute path to the Polars On-Prem license file.
e.g. /etc/polars/license.json.
license.on_prem object Online licensing against the Polars control plane. Configure the fields below on the leader node; on pure worker nodes set only enabled.
license.on_prem.enabled boolean Only used on worker nodes (when no credential fields are set), where it must be true to enable the worker license. Ignored on the leader node. Defaults to true.
license.on_prem.cert_dir path Directory used to store the licensing certificates on the leader node.
e.g. /etc/polars/certs.
license.on_prem.workspace_id string Workspace ID (UUID) used to authenticate against the control plane.
license.on_prem.client_id string Client ID used to authenticate against the control plane.
license.on_prem.client_secret string Client secret used to authenticate against the control plane.

[scheduler] section

Key Type Description
enabled boolean Whether the scheduler component runs in this process.
true for the leader node, false on pure workers.
allow_local_sinks boolean Whether workers are allowed to write to a shared/local disk visible to the scheduler.
false for fully remote/storage-only setups, true if you have a shared filesystem.
allow_local_scans boolean Whether queries are allowed to read data from the local filesystem (e.g. file:///path/to/data).
false for fully remote/storage-only setups, true if you have a shared filesystem.
deny_anonymous_users boolean Whether anonymous users are allowed to execute queries on this cluster. Enabling this requires all queries to be sent with a username. See Anonymous Users.
n_workers integer Expected number of workers in this cluster; scheduler waits for the latter to be online before running queries.
e.g. 4.
default_partitions_per_worker integer Default number of partitions per worker when not specified in the query settings. Defaults to 1.
anonymous_result_location object Destination for results of queries that do not have an explicit sink. Supports a local mounted path (must be reachable on the exact same path and allow_local_sinks enabled) or an object store on S3, Google Cloud Storage, or Azure Blob Storage. All options must be network reachable by scheduler, workers, and client.
e.g. /mnt/storage/polars/results. See Anonymous Results.
e.g. s3://bucket/path/to/key
anonymous_result_location.local object Object used for local disk-backed anonymous results.
anonymous_result_location.local.path path Local path where anonymous results are stored.
e.g. /mnt/storage/polars/results.
anonymous_result_location.s3 object Object used for S3-backed anonymous results.
anonymous_result_location.s3.url string S3 bucket url.
e.g. s3://bucket/path/to/key.
anonymous_result_location.s3.aws_endpoint_url string Storage option configuration, see scan_parquet().
anonymous_result_location.s3.aws_region string Storage option configuration.
e.g. eu-east-1
anonymous_result_location.s3.aws_access_key_id string Storage option configuration.
anonymous_result_location.s3.aws_secret_access_key string Storage option configuration.
anonymous_result_location.gcs object Object used for Google Cloud Storage-backed anonymous results.
anonymous_result_location.gcs.url string GCS bucket url.
e.g. gs://bucket/path/to/key.
anonymous_result_location.gcs.google_service_account_path string Storage option configuration, see scan_parquet().
e.g. /etc/polars/gcs-service-account.json.
anonymous_result_location.abs object Object used for Azure Blob Storage-backed anonymous results.
anonymous_result_location.abs.url string Azure container url.
e.g. az://container/path/to/key.
anonymous_result_location.abs.azure_storage_account_name string Storage option configuration, see scan_parquet().
anonymous_result_location.abs.azure_storage_account_key string Storage option configuration.
client_service object Object used for configuring the bind address of the client service. This is the service used by the polars-cloud Python client. Defaults to 0.0.0.0:5051.
client_service.bind_addr string Bind address for the client service.
e.g. 0.0.0.0:5051.
client_service.bind_addr.ip string IP address for the client service bind address.
e.g. 192.168.1.1.
client_service.bind_addr.port integer Port for the client service bind address.
e.g. 5051.
client_service.bind_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-1.
worker_service object Object used for configuring the bind address of the worker service. This is an internal service used by the workers. Defaults to 0.0.0.0:5050.
worker_service.bind_addr string Bind address for the worker service.
e.g. 0.0.0.0:5050.
worker_service.bind_addr.ip string IP address for the worker service bind address.
e.g. 192.168.1.1.
worker_service.bind_addr.port integer Port for the worker service bind address.
e.g. 5050.
worker_service.bind_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.
checkpoint object Enable checkpointing for queries. This requires that the worker has checkpoint_location configured with S3 storage. See worker.checkpoint_location.
checkpoint.enabled boolean Whether checkpointing runs on this cluster. Must be set to true to enable checkpointing.
checkpoint.period string Period at which checkpoints will be created. Once the period has passed after a stage has completed, a checkpoint is created. Either an ISO 8601 duration format or a jiff friendly duration format (see https://docs.rs/jiff/0.2.18/jiff/fmt/friendly/)
e.g. 5 secs.
e.g. PT5S.

[worker] section

Key Type Description
enabled boolean Whether the worker component runs in this process.
true on worker nodes, false on the dedicated scheduler.
heartbeat_period string Interval for worker heartbeats towards the scheduler, used for liveness and load reporting. Either an ISO 8601 duration format or a jiff friendly duration format (see https://docs.rs/jiff/0.2.18/jiff/fmt/friendly/)
e.g. 5 secs.
e.g. PT5S.
shuffle_location object Object used for shuffle data storage. Supports worker-local disk, a shared filesystem, or an object store on S3, Google Cloud Storage, or Azure Blob Storage. See Shuffle data.
shuffle_location.local object Object used for local disk-backed shuffle data storage.
shuffle_location.local.path path Local path where shuffle/intermediate data is stored; fast local SSD is recommended.
e.g. /mnt/storage/polars/shuffle.
shuffle_location.shared_filesystem object Object used for shared filesystem-backed shuffle data storage.
shuffle_location.shared_filesystem.path path Shared filesystem path where shuffle/intermediate data is stored. Must be accessible by all workers on the same path.
e.g. /mnt/storage/polars/shuffle.
shuffle_location.s3 object Object used for S3-backed shuffle data storage.
shuffle_location.s3.url path Destination for shuffle/intermediate data.
e.g. s3://bucket/path/to/key.
shuffle_location.s3.aws_endpoint_url string Storage option configuration, see scan_parquet().
shuffle_location.s3.aws_region string Storage option configuration.
e.g. eu-east-1
shuffle_location.s3.aws_access_key_id string Storage option configuration.
shuffle_location.s3.aws_secret_access_key string Storage option configuration.
shuffle_location.gcs object Object used for Google Cloud Storage-backed shuffle data storage.
shuffle_location.gcs.url path Destination for shuffle/intermediate data.
e.g. gs://bucket/path/to/key.
shuffle_location.gcs.google_service_account_path string Storage option configuration, see scan_parquet().
e.g. /etc/polars/gcs-service-account.json.
shuffle_location.abs object Object used for Azure Blob Storage-backed shuffle data storage.
shuffle_location.abs.url path Destination for shuffle/intermediate data.
e.g. az://container/path/to/key.
shuffle_location.abs.azure_storage_account_name string Storage option configuration, see scan_parquet().
shuffle_location.abs.azure_storage_account_key string Storage option configuration.
checkpoint_location object Location where checkpoints for queries are stored. Required when the scheduler has [scheduler.checkpoint] enabled. Supports a shared filesystem or an object store on S3, Google Cloud Storage, or Azure Blob Storage. See Checkpointing.
checkpoint_location.shared_filesystem.path path Shared filesystem path where checkpoint data is stored. Must be accessible by all workers on the same path.
e.g. /mnt/storage/polars/checkpoints.
checkpoint_location.s3 object Object used for S3-backed checkpoint storage.
checkpoint_location.s3.url path Destination for checkpoint data.
e.g. s3://bucket/path/to/key.
checkpoint_location.s3.aws_endpoint_url string Storage option configuration, see scan_parquet().
checkpoint_location.s3.aws_region string Storage option configuration.
e.g. eu-east-1
checkpoint_location.s3.aws_access_key_id string Storage option configuration.
checkpoint_location.s3.aws_secret_access_key string Storage option configuration.
checkpoint_location.gcs object Object used for Google Cloud Storage-backed checkpoint storage.
checkpoint_location.gcs.url path Destination for checkpoint data.
e.g. gs://bucket/path/to/key.
checkpoint_location.gcs.google_service_account_path string Storage option configuration, see scan_parquet().
e.g. /etc/polars/gcs-service-account.json.
checkpoint_location.abs object Object used for Azure Blob Storage-backed checkpoint storage.
checkpoint_location.abs.url path Destination for checkpoint data.
e.g. az://container/path/to/key.
checkpoint_location.abs.azure_storage_account_name string Storage option configuration, see scan_parquet().
checkpoint_location.abs.azure_storage_account_key string Storage option configuration.
task_service object Object used for configuring the bind address of the task service. This is an internal service in the worker for receiving tasks from the scheduler. Defaults to 0.0.0.0:5052.
task_service.bind_addr string Bind address for the task service.
e.g. 0.0.0.0:5052.
task_service.bind_addr.ip string IP address for the task service bind address.
e.g. 192.168.1.1.
task_service.bind_addr.port integer Port for the task service bind address.
e.g. 5052.
task_service.bind_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.
task_service.public_addr string Address at which this service is reachable by the scheduler. Defaults to the bind address if not set. This field is required when the bind address is 0.0.0.0.
e.g. 192.168.1.1.
task_service.public_addr.ip string IP address for the task service public address.
e.g. 192.168.1.2.
task_service.public_addr.port integer Port for the task service public address.
e.g. 5052.
task_service.public_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.
shuffle_service object Object used for configuring the bind address of the task service. This is an internal service in the worker for receiving tasks from the scheduler. Defaults to 0.0.0.0:5052.
shuffle_service.bind_addr string Bind address for the task service.
e.g. 0.0.0.0:5053.
shuffle_service.bind_addr.ip string IP address for the task service bind address.
e.g. 192.168.1.1.
shuffle_service.bind_addr.port integer Port for the task service bind address.
e.g. 5053.
shuffle_service.bind_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.
shuffle_service.public_addr string Address at which this service is reachable by the scheduler. Defaults to the bind address if not set. This field is required when the bind address is 0.0.0.0.
e.g. 192.168.1.1.
shuffle_service.public_addr.ip string IP address for the task service public address.
e.g. 192.168.1.2.
shuffle_service.public_addr.port integer Port for the task service public address.
e.g. 5053.
shuffle_service.public_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.
env_vars object Environment variable overrides used by Polars or user code, as a table of key/value string pairs.
e.g. { POLARS_MAX_THREADS = "8" }.
extras.hdfs.enabled boolean Enable HDFS support.
extras.pyiceberg.enabled boolean Enable PyIceberg support.

[observatory] section

Key Type Description
enabled boolean Enable sending/receiving profiling data so clients can call result.await_profile().
true on both scheduler and workers if you want profiles on queries; false to disable.
max_metrics_bytes_total integer How many bytes all the worker host metrics will consume in total. If a system-wide memory limit is specified then this is added to the share that the scheduler takes. For every worker, about 50 bytes of metrics are stored per second.
database_path string Location to use for storing profiling data. An SQLite database file will be created here, or if a file already exists it will be opened. If this points to a directory, a file in that directory will be created. Polars On-Prem will automatically add the cluster_id to this file name to ensure uniqueness within the directory.
service object Object used for configuring the bind address of the observatory service. This is an internal service in the scheduler for receiving profiling data from all nodes. Defaults to 0.0.0.0:5049.
service.bind_addr string Bind address for the observatory service.
e.g. 0.0.0.0:5049.
service.bind_addr.ip string IP address for the observatory service bind address.
e.g. 192.168.1.1.
service.bind_addr.port integer Port for the observatory service bind address.
e.g. 5049.
service.bind_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.
rest_api.enabled boolean By default enabled for exposing the observatory REST API. This is a public service for accessing the profiling data and host metrics data through a web interface.
rest_api.service object Object used for configuring the bind address of the observatory REST API service. Defaults to 0.0.0.0:3001.
rest_api.service.bind_addr string Bind address for the observatory REST API service.
e.g. 0.0.0.0:3001.
rest_api.service.bind_addr.ip string IP address for the observatory REST API service bind address.
e.g. 192.168.1.1.
rest_api.service.bind_addr.port integer Port for the observatory REST API service bind address.
e.g. 3001.
rest_api.service.bind_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.

[monitoring] section

Key Type Description
enabled boolean Enable sending/receiving monitoring data to the observatory service. If enabled, it will use the address specified in observatory_service.public_addr.
host_metrics object Object used for configuring the host metrics exporter.
host_metrics.enabled boolean Enable/disable exporting host metrics from this node
host_metrics.disk_usage_metrics boolean Whether to export disk usage metrics for the shuffle directory.
host_metrics.disk_io_metrics boolean Whether to export disk read/write throughput metrics for the shuffle directory (enabled by default if IO accounting is enabled for the used cgroup).

[static_leader] section

Key Type Description
leader_instance_id string ID of the leader node; should match the scheduler’s instance_id.
Typically scheduler to match your scheduler node.
scheduler_service.public_addr string Address at which the scheduler client service is reachable from this node.
e.g. 192.168.1.1.
scheduler_service.public_addr.ip string IP address for the scheduler client service public address.
e.g. 192.168.1.1.
scheduler_service.public_addr.port integer Port for the scheduler client service public address.
e.g. 5051.
scheduler_service.public_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.
observatory_service.public_addr string Address at which the observatory service is reachable from this node.
e.g. 192.168.1.1.
observatory_service.public_addr.ip string IP address for the observatory service public address.
e.g. 192.168.1.1.
observatory_service.public_addr.port integer Port for the observatory service public address.
e.g. 5049.
observatory_service.public_addr.hostname string Alternative to ip, resolved once at startup.
e.g. my-host-2.

[lineage] section

Key Type Description
enabled bool Enable the OpenLineage service.
transport.http.endpoint string HTTP or HTTPS endpoint of the OpenLineage collector.
e.g. https://lineage_collector:5000.