USER MANUALS

Snowflake Open Catalog

In case that you already have a Snowflake Open Catalog containing Iceberg Tables managed by Snowflake you want to access from the Denodo Embedded MPP, you can use the Snowflake Open Catalog as an external Metastore.

Note

These Iceberg Tables by Snowflake are read-only.

For this you have to define a new catalog. The recommended way is using the presto.catalog property in values.yaml. This new catalog will be accessed from the From MPP Catalogs tab.

Create Snowflake Open Catalog Views From MPP Catalog

Create Snowflake Open Catalog Views From MPP Catalog

See below for an example of an Iceberg catalog connected to Snowflake Open Catalog named snowflakeopencatalog

  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
    #  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

You can also define new catalogs creating a properties file in presto/conf/catalog/, e.g., presto/conf/catalog/snowflakeopencatalog.properties. Although it is preferred to define new catalogs in values.yaml to facilitate version upgrades and management of environment-specific configurations.

Below there is an example of an Iceberg catalog to connect to Snowflake Open Catalog:

  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
  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

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 OAauth2 credentials returned by Open Snowflake Catalog when the principal was created for access from the Embedded MPP. It has the form key:secret.

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.

iceberg.rest.case-insensitive-name-matching

Match namespaces, table and view names case-insensitively. Defaults to false. But you need to set it to true as Snowflake schemas and tables are in uppercase by default.

Note

Depending on the Object Storage location of the Iceberg tables Snowflake Open Catalog accesses, you may need to provide credentials for that storage to the Embedded MPP cluster. To do this, you need to provide them using a Kubernetes secret created before deploying the MPP cluster. e.g. If you are using ASW credentials you need to provide the AWS S3 access and secret key ID.

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

In this case is also necessary to set true the objectStorage.aws.securityCredentials.enabled property in values.yaml

Supported Operations

Operation

Snowflake Open Catalog Catalog

Read

Yes

Create/Insert

No

Update

No

Merge

No

Delete

No

Add feedback