Snowflake
Snowflake supports Iceberg tables through its External Catalog Integration.Create Catalog Integration
Query Tables
Snowflake’s Iceberg REST support is in preview. Check Snowflake’s documentation for the latest syntax and availability.
DuckDB
DuckDB connects via its built-iniceberg extension.
Install Extension
Attach Catalog
Query Tables
Apache Spark
Spark connects through theorg.apache.iceberg.spark.SparkCatalog class.
Spark Configuration
Query Tables
spark-defaults.conf
Spark uses the Iceberg REST spec’s OAuth2 token exchange (
POST /v1/oauth/tokens) automatically when credential is set.Trino
Trino connects via the Iceberg connector with REST catalog type.Catalog Properties
Createetc/catalog/planasonix.properties:
Query Tables
How loadTable Works
When a query engine connects to the Planasonix catalog and loads a table, the following flow occurs:
Key points:
- Credential vending is automatic — the catalog generates short-lived, read-only credentials scoped to the table’s storage path
- Predicate pushdown uses Iceberg manifest statistics (min/max per column) to skip files before downloading them
- Credentials are valid for 1 hour (AWS STS) or the SAS token duration (Azure)
Troubleshooting
401 Unauthorized
401 Unauthorized
403 Feature Not Available
403 Feature Not Available
- The Hosted Catalog feature is only available on Professional tier and above
- Upgrade your plan or contact support
404 Namespace / Table Not Found
404 Namespace / Table Not Found
- Verify the namespace and table names are correct
- Ensure the pipeline has run at least once to auto-register tables
- Check you’re querying the correct organization’s catalog
Credential vending returns empty config
Credential vending returns empty config
- Verify the Managed Lakehouse connection has valid cloud credentials configured
- Check that the credential ID referenced by the table still exists
DuckDB can't read data files
DuckDB can't read data files
- Ensure the DuckDB
icebergextension is installed and loaded - Vended credentials are short-lived; if expired, re-query the table to get fresh credentials