Snowflake Open Catalog¶
Snowflake Open Catalog を使用して Iceberg テーブルを管理しており、これらのテーブルに Denodo Lakehouse Accelerator からアクセスしたい場合、Snowflake Open Catalog を外部メタストアとして使用するように Denodo Lakehouse Accelerator を構成できます。
注釈
Iceberg テーブルに Denodo Lakehouse Accelerator を介してアクセスする場合、Snowflake Open Catalog で管理されている Iceberg テーブルは読み込み専用になることに注意してください。
Snowflake Open Catalog に接続するには、Denodo Lakehouse Accelerator の構成内に新しいカタログを定義する必要があります。
新しいカタログを定義する際に 推奨される方法 は、 values.yaml ファイルで presto.catalog プロパティを使用する方法です。このアプローチを使用すると、管理とバージョンのアップグレードが簡素化されます。新しいカタログを構成すると、Denodo Lakehouse Accelerator データソースの [External Catalogs] タブからこのカタログにアクセスできるようになります。
![]()
[External Catalogs] での Snowflake Open Catalog のビューの作成¶
以下に、Snowflake Open Catalog に接続するように values.yaml 内で構成された、 snowflakeopencatalog という名前の Iceberg カタログの例を示します。
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=${ENV:OAUTH2_CREDENTIAL} # 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
OAUTH2 資格情報は、Kubernetes シークレットの定義 mpp-credentials に新しい環境変数を追加することによって構成できます。このシークレットは、Denodo Lakehouse Accelerator のデプロイの資格情報を管理するために使用されます。 mpp-credentials の構成の詳細については、 Denodo Lakehouse Accelerator の「デプロイ」 のページを参照してください。
次のコマンドは、シークレット内に OAUTH2_CREDENTIAL という名前の新しい環境変数を定義する方法を示しています。
kubectl create secret generic mpp-credentials --from-literal=OAUTH2_CREDENTIAL=<credential>
シークレット内に環境変数を定義したら、次の構文を使用して、 values.yaml ファイルまたはカタログのプロパティファイル内でその環境変数を参照できます。
snowflakeopencatalog: |-
.
.
iceberg.rest.auth.oauth2.credential=${ENV:OAUTH2_CREDENTIAL}
.
.
values.yaml を使用する代わりに、Denodo Lakehouse Accelerator の Helm チャートの presto/conf/catalog/ フォルダ内に別個のプロパティファイルを直接作成することによって、新しいカタログを定義することもできます (例: presto/conf/catalog/snowflakeopencatalog.properties)。このファイル名 (この例では snowflakeopencatalog) が、Denodo Lakehouse Accelerator でのカタログ名になります。
プロパティ¶
プロパティ名 |
説明 |
|---|---|
iceberg.rest.uri |
REST API エンドポイント URI (必須)。例: https://xxxxxxx.snowflakecomputing.com/polaris/api/catalog |
iceberg.rest.auth.type |
使用する認証タイプ。利用可能な値は NONE または OAUTH2 です (デフォルト: NONE)。OAUTH2 では、資格情報またはトークンのいずれかが必要です。 |
iceberg.rest.auth.oauth2.credential |
Denodo Lakehouse Accelerator からのアクセス用にプリンシパルが作成されている場合に Snowflake Open Catalog から返される OAuth2 資格情報 (キー:シークレットの形式)。 |
iceberg.rest.auth.oauth2.scope |
OAUTH2 認証で使用するスコープ。このプロパティは |
iceberg.catalog.warehouse |
接続先の Snowflake Open Catalog の名前。 |
iceberg.rest.case-insensitive-name-matching |
名前空間およびテーブル名の大文字と小文字を一致させるかどうかを指定します (デフォルト: false)。Snowflake のスキーマとテーブルは通常大文字であるため、true に設定することをお勧めします。 |
注釈
Snowflake Open Catalog で Iceberg テーブルのメタデータを管理している場合、通常、実際のデータファイルは外部オブジェクトストレージ (例: AWS S3) に存在しています。Snowflake Open Catalog の構成と Iceberg データの場所によっては、その特定のオブジェクトストレージの資格情報を Denodo Lakehouse Accelerator クラスタに提供しなければならないことがあります。
たとえば、Iceberg データが AWS S3 に保存されていて、明示的な資格情報が必要な場合 (たとえば、EKS Pod Identity、サービスアカウントの IAM ロール、または EC2 インスタンスプロファイルを使用していない場合)、Kubernetes シークレットを次のように作成する必要があります。
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
さらに、以下を設定して values.yaml でセキュリティ資格情報を有効化する必要もあります。
objectStorage:
aws:
securityCredentials:
enabled: true
サポートされる操作¶
次の表に、Snowflake Open Catalog に接続する場合に Denodo Lakehouse Accelerator でサポートされる操作の概要を示します。
操作 |
Iceberg |
|---|---|
読み込み |
○ |
作成/挿入 |
× |
更新 |
× |
マージ |
× |
削除 |
× |