USER MANUALS

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 形式のテーブルを使用してデータをキャッシュする場合は、以下の手順に従ってください。

  1. 組み込み MPP をインストールして構成します (「 組み込み MPP ガイド 」を参照してください)。

  2. Design Studio を開きます。

  3. admin_denodo_mpp データベースにある embedded_mpp データソースを開きます。

  4. embedded_mpp データソースで、 データ一括読み込み を構成します。

  5. [Read Write] タブをクリックします。

  6. [Specify custom catalog and schema] を選択します。

  7. [Reload Catalogs and Schemas] ボタンをクリックします。

  8. iceberg カタログを選択します。

  9. [Save] ボタンをクリックします。

    Configure Iceberg tables for cache

Denodo 組み込み MPP での Iceberg テーブルの作成

Denodo では、JDBC データソースと Denodo 組み込み MPP でのリモートテーブルの作成をサポートしています。Iceberg 形式でリモートテーブルを作成するには、「 リモートテーブルの作成 」のセクションで説明する手順に従い、前のセクションで説明したプロパティを使用して、Denodo サーバーで構成されたいずれかの Iceberg カタログをターゲットカタログとして指定します。これは、Denodo がリモートテーブルを作成するカタログです。

  1. embedded_mpp データソースの横にある 3 点リーダーのアイコンをクリックして、[New] メニューで [Replication (remote table)] をクリックします。

    New remote table menu
  2. 新しいリモートテーブルフォームに入力し、 iceberg カタログを選択します。

    New Iceberg table

注: この機能をサポートするには、embedded_mpp で データ一括読み込みを有効にして構成する 必要があります。

Iceberg テーブルへのデータ一括読み込み

Iceberg 形式でデータ一括読み込みを行う場合、Denodo サーバーでは以下の手順を実行します。

  1. 組み込み MPP のデフォルトカタログ (コネクション URI のカタログ) に一時テーブルを作成します。これは Iceberg 以外のカタログ (デフォルトでは Hive) でなければなりません。デフォルトカタログが Iceberg テーブル形式を使用するカタログの場合、データ一括読み込みは機能しません。

  2. データ一括読み込みを使用して、データを Parquet 形式の一時テーブルにアップロードします。

  3. 次のように、一時テーブルの新しい行を Iceberg テーブルに挿入します。INSERT INTO iceberg_table SELECT * FROM temporary_table 。この挿入時に、組み込み MPP では Iceberg の必要なメタデータを生成します。

  4. 一時テーブルを削除します。

    Bulk Data Loading into Iceberg Tables

注釈

組み込み 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 を設定します。

このプロパティの値は、カタログ名のカンマ区切りリストです。たとえば、 icebergiceberg-onpremiseiceberg-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_namesvdb_cache_querypatternvdb_cache_sequencesvdb_cache_viewname でも、メタデータが見つからない場合に同様のエラーが発生することがあります。この問題を解決するには、以下の手順に従ってください。

警告

この手順では、キャッシュ管理テーブルを再作成します。その後、テーブルは空になります。つまり、組み込み MPP をキャッシュとして使用する Denodo ビューでは、再度キャッシュを読み込む必要があります。

  1. Design Studio を開きます。

  2. Denodo 組み込み MPP データソースを開きます。これは admin_denodo_mpp データベースにあります。

  3. [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'
        ...
    
  4. DBeaver などの JDBC クライアントを使用して、前の手順で取得したコネクション URI で新しい PrestoDB コネクションを作成します。

    Denodo Cache Management tables
  5. 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 が発生します。

  6. Design Studio を使用して、Denodo キャッシュを無効または有効にします。Denodo に対してキャッシュテーブルの再作成が強制されます。

    1. Denodo サーバーの構成メニューを開きます。

    Server Configuration Menu
    1. [Cache status] トグルをクリックしてキャッシュを無効にし、[Save] ボタンをクリックします。

    Disable Denodo cache
    1. 前の手順を繰り返して Denodo キャッシュを有効にし、キャッシュテーブルの再作成を強制します。

Add feedback