Iceberg¶
Apache Iceberg は、大規模な分析データセットの高性能テーブル形式です。Iceberg テーブルは、スキーマの進化、パーティションの進化、およびテーブルバージョンのロールバックを実行でき、テーブルの書き換えや移行は必要ありません。
Denodo 組み込み MPP は、Iceberg テーブルにアクセスするために 組み込み Hive メタストア に接続される、 iceberg
という名前の事前定義されているカタログとともに配布されます。
connector.name=iceberg
# Embedded Hive Metastore
hive.metastore.uri=thrift://hive-metastore:9083
Iceberg テーブルをクエリするには、Denodo 組み込み MPP で Iceberg テーブルを作成する必要があります。Denodo で 組み込みデータソース を使用して グラフィカル に Iceberg テーブルを確認し、Denodo 組み込み MPP で登録して、Denodo で基本ビューを作成します。

Iceberg テーブルの確認¶
重要
グラフィカル に Iceberg テーブルを確認するには、Denodo エンタープライズプラスサブスクリプションバンドルが必要です。オブジェクトストレージをグラフィカルに接続する方法の詳細については、 Parquet、Delta、Iceberg 形式のオブジェクトストレージデータ で確認できます。
注釈
Iceberg は制限付きのカタログであるため、組み込み MPP データソースの [From MPP Catalogs
] タブには表示されません。
Iceberg および組み込み MPP Iceberg コネクターは、一意のスナップショット ID で指定されるテーブルスナップショットを使用したタイムトラベルをサポートします。スナップショット ID は、 $snapshots
メタデータテーブルに保存されます。ストアドプロシージャの ROLLBACK_ICEBERG_VIEW_TO_SNAPSHOT と GET_ICEBERG_VIEW_SNAPSHOTS を使用して、テーブルの状態を以前のスナップショット ID にロールバックできます。
機能¶
Denodo 組み込み MPP が提供する Iceberg テーブルを扱う機能を以下に示します。
グラフィカル に Iceberg データセットを確認し、MPP のテーブルや Denodo の基本ビューを作成します (組み込み MPP データソースの [
From object storage
] タブ)。外部のメタストアの既存の Iceberg テーブルから基本ビューを作成します (組み込み MPP データソースの [
From MPP Catalogs
] タブ)。クエリ
制限事項¶
挿入: 組み込み MPP データソースの [
From Object Storage
] タブを使用して Iceberg テーブルから作成したビューにデータを挿入することはできません。詳細については、「 オブジェクトストレージから作成されたビューの管理 」を参照してください。
Polaris の内部カタログへの接続¶
Polaris Catalog は Iceberg 用のオープンソースのカタログであり、Iceberg のオープンな REST カタログ仕様を実装しています。Polaris Catalog の目標は、Presto、Spark、Snowflake などの複数のエンジンが同じデータセットを読み書きできる共有データレイヤーを作成することです。組み込み MPP は、Polaris の内部カタログに接続して Iceberg テーブルを読み書きできます。
新しいカタログを定義して Polaris に接続し、Iceberg テーブルにアクセスするには、 prestocluster\presto\conf\catalog
にカタログプロパティファイルを追加します。
connector.name=iceberg
iceberg.catalog.type=rest
iceberg.rest.uri=https://xxxxx.snowflakecomputing.com/polaris/api/catalog
iceberg.rest.auth.type=OAUTH2
iceberg.rest.auth.oauth2.token=<generatedToken>
iceberg.catalog.warehouse=your_catalog_name
iceberg.catalog.type: rest に設定します。Polaris Catalog は、Iceberg のオープンな REST カタログ仕様を実装しているためです。
iceberg.rest.uri: Polaris Catalog のエンドポイントです。
iceberg.rest.auth.oauth2.token: OAUTH2 認証に使用するトークンです。次のリクエストで取得できます。
curl -i -X POST https://xxxxxx.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokens -d 'grant_type=client_credentials&client_id=<client_id>=&client_secret=<client_secret>&scope=PRINCIPAL_ROLE:ALL'
client_id
およびclient_secret
は、新しいプリンシパルの作成時に Polaris から返される OAuth2 資格情報です。iceberg.catalog.warehouse: 接続する Polaris Catalog の名前です。
トラブルシューティング¶
ERROR: Presto or VDP receives an error: Invalid namespace
- 原因
Iceberg コネクター構成で設定された OAuth2 トークンの有効期限が終了しています。
- 解決策
「 Polaris の内部カタログへの接続 」セクションの手順に従ってトークンを再生成します。
ERROR: Presto or VDP receives an error Request was not authenticated
- 原因
Iceberg コネクター構成で設定された OAuth2 トークンの有効期限が終了しています。
- 解決策
「 Polaris の内部カタログへの接続 」セクションの手順に従ってトークンを再生成します。