Skip to main content
External Tables are available starting in StarTree release 0.15.0 and must be enabled on demand — contact your StarTree representative to have the feature activated for your environment. Rows marked 0.16.0 require that release or later.
This page summarizes what External Tables support today, in one place. Legend:
  • ✅ Supported — includes capabilities that work under documented conditions or that StarTree enables on request; conditions are noted per row
  • ⚠️ Preview — early access, not yet generally available
  • ❌ Not supported by StarTree
  • — Not applicable: the source, service, or format does not offer this capability, so there is nothing for StarTree to support

Catalogs and sources

Every catalog source is reached through a single connector, the Iceberg REST protocol (catalogType=iceberg-rest), with a serviceType selecting the catalog-specific adapter. Raw-file sources list Parquet files directly from object storage without a catalog. Notes:
  • For Nessie, address a branch or ref by setting catalog.iceberg-rest.prefix (for example main); unset means the server default branch.
  • Azure Blob Storage and ADLS are not supported as sources.
  • CREATE TABLE over SQL DDL is available as a preview for Iceberg REST sources (serviceTypes rest, glue, s3tables); contact StarTree to enable it.

Table and file formats

Data files: Parquet only, for every source. CSV, JSON, Avro, and ORC data files are not supported. Recommended file size is 128 MB to 512 MB; see Operational Guidance.

Row-level deletes (Iceberg)

How each Iceberg delete mechanism is handled:

Authentication and authorization

Iceberg REST sources authenticate on two independent surfaces: the catalog surface (the REST API that serves table metadata, keys under catalog.iceberg-rest.auth.rest.*) and the storage surface (reading Parquet data files from object storage, keys under catalog.iceberg-rest.auth.storage.*). Raw S3 and GCS sources have a single combined surface (catalog.s3.* / catalog.gcs-interop.*).

Catalog (REST) surface

¹ SigV4 signing is required by the service; the signing credentials can come from static keys, an assumed IAM role, or the cluster node role.
  • The dashes reflect the services themselves: AWS Glue and S3 Tables Iceberg REST endpoints accept only SigV4-signed requests, while Unity Catalog and spec-compliant REST catalogs use token or OAuth2 auth and do not speak SigV4.
  • Glue: catalog.iceberg-rest.auth.rest.service must be set to glue explicitly. It defaults to s3tables, which makes Glue reject the SigV4 signature.
  • Assumed IAM role on the catalog surface: set catalog.iceberg-rest.auth.rest.roleArn (plus .externalId if the trust policy requires it). catalog.iceberg-rest.auth.rest.region is required whenever a catalog-side roleArn is set; when a role is configured, static keys on that surface are ignored. The role is assumed from the cluster’s ambient identity (IRSA / instance profile). Available on the controller-executor sync path only.
  • OAuth2 uses the RFC 6749 client-credentials grant: oauthTokenUri, oauthClientId, oauthClientSecret, and optional oauthScopes. Tokens are cached and refreshed automatically.
  • Raw S3 and GCS sources have no catalog surface.

Storage (data file) surface

  • Assumed IAM role (storage): auth.storage.region is required whenever a storage roleArn is set — the sync fails fast without it. Static storage keys are ignored once a role is configured, and the STS AssumeRole call authenticates with the cluster’s ambient AWS identity (node role / IRSA), which the role’s trust policy must trust.
  • Unity vends short-lived S3 credentials per table load by default. Only catalog.iceberg-rest.auth.storage.region is needed, and it is required even with vended credentials. Static keys or an assumed role can be configured but are ignored whenever vending succeeds.
  • GCS accepts HMAC keys only. There is no IAM-role or workload-identity option. With keyType=SECRET, the accessKey/secretKey values are Secret Manager secret names, resolved using secretmanagertype=GCS, gcpprojectid, and gcpkeypath. Every GCS connection must also set disable.integrity.protections="true" and endpoint=https://storage.googleapis.com.
  • Cluster node role means omitting all credential keys so the AWS SDK default chain (instance profile, IRSA) is used.

Configuration keys by method

Minimum permissions per source


Feature support

Each supported source has its own column. AWS Glue, S3 Tables, Unity Catalog, and generic Iceberg REST catalogs (the column that also covers Apache Polaris, Snowflake Open Catalog, and Snowflake Horizon) all connect through the same iceberg-rest connector, so they share the snapshot-driven capabilities; the Data Lake sources list files directly and have no snapshot machinery.

Writing to the lake (Data Export Task)

External Tables never write to their source. The write path in the other direction is the Data Export Task, a minion task that exports completed REALTIME segments to the lake as Parquet. It is the complement of External Table sync, used for cold-tier archival, feeding downstream Iceberg catalogs, and cross-system sharing. It requires a minion tier and is enabled on demand by StarTree.

Export destinations

Export authentication

Export facts worth knowing:
  • Source: REALTIME tables only. sourceTableName must carry the _REALTIME suffix; External (OFFLINE) tables cannot be exported.
  • Output format: Parquet only, with SNAPPY (default), GZIP, ZSTD, or UNCOMPRESSED compression.
  • Iceberg commits are batched: staged files are committed as one Iceberg snapshot per batch (iceberg.commitThreshold, default 250 files), keeping snapshot churn low on high-throughput tables.

See Data Type Mapping for how source types map to Pinot types, Operational Guidance for sizing advice and capacity guardrails, and Troubleshooting for diagnosis guides.