USER MANUALS

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

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.rest.auth.oauth2.credential. Example: PRINCIPAL_ROLE:ALL `

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

Add feedback