Denodo 組み込み MPP¶
データ一括読み込みを実行するように Denodo 組み込み MPP データソースを構成するには、「 HDFS、S3、または ADLS などの分散オブジェクトストレージへのデータ一括読み込み 」のセクションの手順に従ってください。
Iceberg テーブル¶
Apache Iceberg は、大規模な分析データセットの高性能テーブル形式です。Iceberg テーブルは ACID トランザクション、スキーマの完全な進化、パーティションの進化、さらに テーブルバージョンのロールバック をサポートしており、テーブルの書き換えや移行は必要ありません。
Denodo 組み込み MPP はデフォルトで iceberg
というカタログを使用して、テーブルを Iceberg 形式で保存します。Iceberg コネクター で別の名前を使用する場合は、「 カタログ名が Iceberg 以外の場合に Denodo MPP または Presto データソースに Iceberg テーブルを作成する 」のセクションの指示に従ってください。
Iceberg テーブルを使用して、組み込み MPP をキャッシュとして使用するように Denodo サーバーを構成する¶
Denodo サーバーでは、JDBC データソースと組み込み MPP によるビューのデータのキャッシュをサポートしています。この方法については、「 キャッシュの構成 」のセクションを参照してください。Iceberg 形式のテーブルを使用してデータをキャッシュする場合は、以下の手順に従ってください。
組み込み MPP をインストールして構成します (「 組み込み MPP ガイド 」を参照してください)。
Design Studio を開きます。
admin_denodo_mpp
データベースにあるembedded_mpp
データソースを開きます。embedded_mpp
データソースで、 データ一括読み込み を構成します。[Read Write] タブをクリックします。
[Specify custom catalog and schema] を選択します。
[Reload Catalogs and Schemas] ボタンをクリックします。
iceberg
カタログを選択します。[Save] ボタンをクリックします。
Denodo 組み込み MPP での Iceberg テーブルの作成¶
Denodo では、JDBC データソースと Denodo 組み込み MPP でのリモートテーブルの作成をサポートしています。Iceberg 形式でリモートテーブルを作成するには、「 リモートテーブルの作成 」のセクションで説明する手順に従い、前のセクションで説明したプロパティを使用して、Denodo サーバーで構成されたいずれかの Iceberg カタログをターゲットカタログとして指定します。これは、Denodo がリモートテーブルを作成するカタログです。
embedded_mpp データソースの横にある 3 点リーダーのアイコンをクリックして、[New] メニューで [Replication (remote table)] をクリックします。
新しいリモートテーブルフォームに入力し、
iceberg
カタログを選択します。
注: この機能をサポートするには、embedded_mpp で データ一括読み込みを有効にして構成する 必要があります。
Iceberg テーブルへのデータ一括読み込み¶
Iceberg 形式でデータ一括読み込みを行う場合、Denodo サーバーでは以下の手順を実行します。
組み込み MPP のデフォルトカタログ (コネクション URI のカタログ) に一時テーブルを作成します。これは Iceberg 以外のカタログ (デフォルトでは Hive) でなければなりません。デフォルトカタログが Iceberg テーブル形式を使用するカタログの場合、データ一括読み込みは機能しません。
データ一括読み込みを使用して、データを Parquet 形式の一時テーブルにアップロードします。
次のように、一時テーブルの新しい行を Iceberg テーブルに挿入します。
INSERT INTO iceberg_table SELECT * FROM temporary_table
。この挿入時に、組み込み MPP では Iceberg の必要なメタデータを生成します。一時テーブルを削除します。
注釈
組み込み MPP のコネクション URI で構成されるデフォルトカタログは、Iceberg 以外のカタログでなければなりません。組み込み MPP クラスタのデプロイ に使用される cluster.sh
スクリプトは、自動的に有効なカタログを構成します。
カタログ名が Iceberg 以外の場合に Denodo MPP または Presto データソースに Iceberg テーブルを作成する¶
Denodo 組み込み MPP は、Iceberg テーブルでのデータの作成とクエリ実行、データの読み込みをサポートしています。Denodo 組み込み MPP はデフォルトで iceberg
というカタログを使用して、テーブルを Iceberg 形式で保存します。Iceberg 形式で異なる名前の 新しいカタログを作成する こともできます。新しい Iceberg カタログを作成した場合、そのカタログを Iceberg カタログとして認識するように Denodo サーバーを構成する必要があります。これを行うには、Denodo サーバーのプロパティ com.denodo.vdb.util.tablemanagement.sql.PrestoTableManager.iceberg.catalogNames
を設定します。
このプロパティの値は、カタログ名のカンマ区切りリストです。たとえば、 iceberg
、 iceberg-onpremise
、 iceberg-cloud
というカタログに Iceberg 形式のテーブルが含まれるようにするには、VQL シェルで以下のコマンドを実行します。
SET 'com.denodo.util.jdbc.inspector.impl.PrestoJDBCInspector.iceberg.catalogNames' = 'iceberg, iceberg-onpremise, iceberg-cloud';
カタログに Iceberg 形式のテーブルが含まれないようにするには、空の値を設定します。
SET 'com.denodo.util.jdbc.inspector.impl.PrestoJDBCInspector.iceberg.catalogNames' = '';
NULL 値を設定すると、プロパティは無効になります。これがデフォルト値です。プロパティを無効にすると、Denodo では、テーブルが iceberg
というカタログにある場合のみ、Iceberg 形式を使用すると見なします。
SET 'com.denodo.util.jdbc.inspector.impl.PrestoJDBCInspector.iceberg.catalogNames' = null;
有効にする場合、このコマンドの実行後に Denodo サーバーを再起動する必要はありません。
注釈
これは、Denodo サーバーのすべての Denodo 組み込み MPP データソースと Presto データソースに影響を与えるグローバルプロパティです。
トラブルシューティング¶
このセクションでは、Denodo 組み込み MPP の使用時に最もよくある問題の解決方法について説明します。
Iceberg テーブルを使用している Denodo データベースまたはビューのキャッシュを有効にすると、以下のエラーが発生する場合があります。
com.denodo.vdb.cache.VDBCacheException: Error creating table 'vdb_cache_querypattern' into the
data source using the table creation template 'DATA_SOURCE_DEFAULT':
CREATE TABLE iceberg.default.vdb_cache_querypattern (
queryPatternId BIGINT,
databaseName VARCHAR,
viewName VARCHAR,
numConditions BIGINT,
VDPCondition VARCHAR,
VDPConditionList VARCHAR,
projectedFields VARCHAR,
expirationDate BIGINT,
qpStatus VARCHAR,
lastUpdated INTEGER,
valid INTEGER
)
WITH (FORMAT = 'PARQUET', location = 'hdfs://<server>/user/presto/iceberg/vdb_cache_querypattern')
Query failed (#20240418_201136_13374_ppk3s): Table metadata is missing.
この問題は、 iceberg.default.vdb_cache_querypattern
テーブルのメタデータが見つからないために発生します。つまり、データやメタデータの場所がオブジェクトストレージに存在しないか、データやメタデータが破損しています。誰かが誤って hdfs://<server>/user/presto/iceberg/vdb_cache_querypattern
ルートを削除した場合に発生することがあります。他のキャッシュ管理テーブル vdb_cache_names
、 vdb_cache_querypattern
、 vdb_cache_sequences
、 vdb_cache_viewname
でも、メタデータが見つからない場合に同様のエラーが発生することがあります。この問題を解決するには、以下の手順に従ってください。
警告
この手順では、キャッシュ管理テーブルを再作成します。その後、テーブルは空になります。つまり、組み込み MPP をキャッシュとして使用する Denodo ビューでは、再度キャッシュを読み込む必要があります。
Design Studio を開きます。
Denodo 組み込み MPP データソースを開きます。これは
admin_denodo_mpp
データベースにあります。[VQL] タブをクリックします。組み込み MPP の VQL には、組み込み MPP クラスタのコネクション URI が含まれます。
CREATE OR REPLACE DATASOURCE JDBC embedded_mpp EMBEDDED_MPP DRIVERCLASSNAME = 'com.facebook.presto.jdbc.PrestoDriver' DATABASEURI = 'jdbc:presto://<PRESTO_HOST>:<PRESTO_PORT>/hive/default?SSL=true&protocols=http11' USERNAME = 'presto' ...
DBeaver などの JDBC クライアントを使用して、前の手順で取得したコネクション URI で新しい PrestoDB コネクションを作成します。
Denodo 組み込み MPP に接続したら、以下の SQL コマンドを実行して
iceberg.default.vdb_cache_querypattern
テーブルを削除します。DELETE TABLE iceberg.default.vdb_cache_querypattern
この SQL コマンドは、Presto バージョン 0.285 以降のバージョンでのみ互換性があることに注意してください。0.284 以前のバージョンを使用すると、エラー
Table metadata is missing
が発生します。Design Studio を使用して、Denodo キャッシュを無効または有効にします。Denodo に対してキャッシュテーブルの再作成が強制されます。
Denodo サーバーの構成メニューを開きます。
[
Cache status
] トグルをクリックしてキャッシュを無効にし、[Save
] ボタンをクリックします。
前の手順を繰り返して Denodo キャッシュを有効にし、キャッシュテーブルの再作成を強制します。