Snowflake Open Catalog¶
If you are using Snowflake Open Catalog to manage your Iceberg tables and wish to access these tables from the Denodo Embedded MPP, you can configure the Embedded MPP to use Snowflake Open Catalog as an external Metastore.
Note
Be aware that Iceberg tables managed by Snowflake Open Catalog are read-only when accessed via the Denodo Embedded MPP.
To connect to Snowflake Open Catalog, you must define a new catalog within your Denodo Embedded MPP configuration.
The recommended method for defining new catalogs is by using the presto.catalog property in your values.yaml file.
This approach simplifies management and version upgrades. Once configured, this new catalog will be accessible from the From MPP Catalogs tab
in the Denodo Embedded MPP data source.
![]()
Create Snowflake Open Catalog Views From MPP Catalog¶
Here is an example of an Iceberg catalog named snowflakeopencatalog configured to connect to Snowflake Open Catalog within your values.yaml:
catalog:
snowflakeopencatalog: |-
connector.name=iceberg
iceberg.catalog.type=rest
iceberg.rest.uri=https://xxxxxxx.snowflakecomputing.com/polaris/api/catalog
iceberg.rest.auth.type=OAUTH2
iceberg.rest.auth.oauth2.credential=xxxxxxxxxx # key:secret
iceberg.rest.auth.oauth2.scope=PRINCIPAL_ROLE:ALL
iceberg.catalog.warehouse=external_catalog
iceberg.rest.case-insensitive-name-matching=true
hive.pushdown-filter-enabled=true
hive.parquet-batch-read-optimization-enabled=true
As an alternative to using values.yaml, you can define a new catalog by creating a separate properties file directly in the presto/conf/catalog/
folder of the Embedded MPP Helm chart (e.g., presto/conf/catalog/snowflakeopencatalog.properties). The file name, snowflakeopencatalog in this example,
will become the catalog name in Embedded MPP.
Properties¶
Property Name |
Description |
|---|---|
iceberg.rest.uri |
REST API endpoint URI (required). Example: https://xxxxxxx.snowflakecomputing.com/polaris/api/catalog |
iceberg.rest.auth.type |
The authentication type to use. Available values are NONE or OAUTH2 (default: NONE). OAUTH2 requires either a credential or token. |
iceberg.rest.auth.oauth2.credential |
The OAuth2 credentials (in key:secret format) returned by Snowflake Open Catalog when the principal was created for access from the Embedded MPP. |
iceberg.rest.auth.oauth2.scope |
The scope to use for OAUTH2 authentication. This property is only applicable when using |
iceberg.catalog.warehouse |
The name of the Snowflake Open Catalog you want to connect to. |
iceberg.rest.case-insensitive-name-matching |
Specifies whether to match namespaces and table names case-insensitively (default: false). Recommended to set this to true as Snowflake schemas and tables are typically in uppercase. |
Note
While Snowflake Open Catalog manages the metadata for your Iceberg tables, the actual data files typically reside in an external object storage (e.g., AWS S3). Depending on the configuration of your Snowflake Open Catalog and the location of your Iceberg data, you may need to provide credentials for that specific object storage to the Denodo Embedded MPP cluster.
As an example, if your Iceberg data is stored in AWS S3 and requires explicit credentials (e.g., if you’re not using EKS Pod Identities, IAM Roles for Service Accounts or EC2 instance profiles), you have to create a Kubernetes secret like this:
kubectl create secret generic mpp-credentials
--from-literal=METASTORE_DB_PASSWORD=hive
--from-literal=AWS_ACCESS_KEY_ID=awsaccesskeyid
--from-literal=AWS_SECRET_ACCESS_KEY=awssecretaccesskey
Additionally, you need to enable the security credentials in your values.yaml by setting:
objectStorage:
aws:
securityCredentials:
enabled: true
Supported Operations¶
The following table summarizes the operations supported by the Denodo Embedded MPP when connecting to a Snowflake Open Catalog:
Operation |
Iceberg |
|---|---|
Read |
Yes |
Create/Insert |
No |
Update |
No |
Merge |
No |
Delete |
No |
