USER MANUALS

AWS Glue Data Catalog

すでに AWS Glue Data Catalog 内でテーブルを管理している場合、Denodo Lakehouse Accelerator でそのテーブルに接続して外部メタストアとして使用できます。これにより、既存のテーブルを活用して、Hive、Iceberg、および Delta Lake のテーブルに直接アクセスできます。

AWS Glue Data Catalog に接続するには、Denodo Lakehouse Accelerator の構成内に新しいカタログを定義する必要があります。 推奨される方法 は、 values.yaml ファイルで presto.catalog プロパティを使用する方法です。このアプローチを使用すると、管理とバージョンのアップグレードが簡素化されます。

この新しいカタログを構成すると、Denodo Lakehouse Accelerator データソースの [External Catalogs] タブからアクセス可能になり、AWS Glue Data Catalog のテーブルをグラフィカルに確認してそこから基本ビューを作成できるようになります。

Create AWS Glue Views External Catalogs

[External Catalogs] での AWS Glue のビューの作成

以下に、AWS Glue Data Catalog に接続する glue-hiveglue-iceberg 、および glue-delta のカタログを定義する方法の例を示します。これは values.yamlcatalog セクション内に記述します。

  # -- Additional catalogs. Uncomment and configure as needed
  catalog:
    # Example: Hive Catalog for AWS Glue
    #glue-hive: |-
    #  connector.name=hive-hadoop2
    #  hive.metastore=glue
    #  hive.metastore.glue.region=your_aws_region # e.g., us-east-1
    #  hive.metastore.glue.catalogid=your_aws_account_id # Your AWS Account ID
    #  hive.metastore.glue.aws-access-key=YOUR_ACCESS_KEY
    #  hive.metastore.glue.aws-secret-key={ENV:AWS_SECRET}
    #  hive.config.resources=/opt/presto-server/etc/catalog/core-site.xml
    #  hive.parquet.use-column-names=true
    #  hive.parquet-batch-read-optimization-enabled=true
    #  hive.pushdown-filter-enabled=true
    #  hive.quick-stats.enabled=true
    #  hive.skip-empty-files=true

    # Example: Iceberg Catalog for AWS Glue
    #glue-iceberg: |-
    #  connector.name=iceberg
    #  iceberg.catalog.type=HIVE
    #  hive.metastore=glue
    #  hive.metastore.glue.region=your_aws_region # e.g., us-east-1
    #  hive.metastore.glue.catalogid=your_aws_account_id # Your AWS Account ID
    #  hive.metastore.glue.aws-access-key=YOUR_ACCESS_KEY
    #  hive.metastore.glue.aws-secret-key={ENV:AWS_SECRET}
    #  hive.config.resources=/opt/presto-server/etc/catalog/core-site.xml
    #  hive.parquet-batch-read-optimization-enabled=true
    #  hive.pushdown-filter-enabled=true

    # Example: Delta Lake Catalog for AWS Glue
    #glue-delta: |-
    #  connector.name=delta
    #  hive.metastore=glue
    #  hive.metastore.glue.region=
    #  hive.metastore.glue.region=your_aws_region # e.g., us-east-1
    #  hive.metastore.glue.catalogid=your_aws_account_id # Your AWS Account ID
    #  hive.metastore.glue.aws-access-key=YOUR_ACCESS_KEY
    #  hive.metastore.glue.aws-secret-key={ENV:AWS_SECRET}
    #  hive.config.resources=/opt/presto-server/etc/catalog/core-site.xml
    #  hive.parquet-batch-read-optimization-enabled=true
    #  hive.pushdown-filter-enabled=true

values.yaml を使用する代わりに、Denodo Lakehouse Accelerator の Helm チャートの presto/conf/catalog/ フォルダ内に別個のプロパティファイルを直接作成することによって、新しいカタログを定義することもできます (例: presto/conf/catalog/glue_iceberg.properties)。このファイル名 (例: glue_iceberg) が、Denodo Lakehouse Accelerator でのカタログ名になります。

サポートされる操作 (形式別)

次の表に、さまざまなテーブル形式で Denodo Lakehouse Accelerator によってサポートされている AWS Glue Data Catalog の操作の概要を示します。

操作

Hive

Iceberg

Delta

読み込み

作成/挿入

○ (*)

○ (**)

×

更新

×

○ (***)

×

マージ

×

○ (****)

×

削除

×

○ (*****)

×

(*) Hive テーブルへの書き込み操作をサポートするには、Hive カタログの構成に次のプロパティが含まれることを確認します。

hive.non-managed-table-writes-enabled=true

(**) 事前定義されている iceberg カタログ以外の Iceberg カタログで書き込み操作をサポートするには、以下を実行して、その追加のカタログ名を認識するように Denodo を構成する必要もあります。

SET 'com.denodo.util.jdbc.inspector.impl.PrestoJDBCInspector.iceberg.catalogNames' = 'iceberg, other_iceberg, another_iceberg';

(***) Iceberg テーブルの更新には、少なくともバージョン 2 以降の形式が必要です。また、更新モードは Merge-on-Read である必要があります。

(****) マージ操作はサポートされます。Iceberg テーブルのマージには、少なくともバージョン 2 移行の形式が必要です。また、 write.update.mode モードは merge-on-read である必要があります。Iceberg テーブルでは、複数の MERGE ステートメントを同じテーブルに対して並列に実行することはサポートされていません。同じ Iceberg テーブルに対して 2 つ以上の MERGE 操作を同時に実行した場合、次のように処理されます。 * 完了すべき最初の操作は成功します。 * 以降の操作は書き込みが競合するために失敗し、次のエラーを返します。

   Failed to commit Iceberg update to table: <table name>
   Found conflicting files that can contain records matching true

(*****) Iceberg V1 テーブル の場合、Denodo で削除できるのは、1 つ以上の パーティション全体 のデータのみです。WHERE 句で使用されるすべての列は、ターゲットテーブルの ID 変換されたパーティション分割列 である必要があります。

認証と AWS 資格情報

Denodo Lakehouse Accelerator から AWS Glue Data Catalog に接続する場合に推奨される方法は、 AWS アクセスキーとシークレットキーを明示的に指定しない 方法です。このためには、AWS IAM の以下の認証方法を利用します。

  • EKS Pod Identity

  • サービスアカウントの IAM ロール (IRSA)

  • IAM EC2 インスタンスプロファイル

上記の IAM ロールベースの認証方法が適用できないシナリオの場合 (たとえば、EKS の外部の場合や、特定のカスタム設定の場合)、明示的に AWS 資格情報を指定できます。この場合、 Glue の資格情報と S3 の資格情報 の両方を提供する必要があります。Denodo Lakehouse Accelerator は、Glue のメタデータに加え、実際のデータが存在する S3 ファイルへのアクセスも必要とするためです。

これらの資格情報は以下のいずれかとして指定できます。

  1. アクセスキーとシークレットキー

    • hive.metastore.glue.aws-access-key および hive.metastore.glue.aws-secret-key (Glue へのアクセス用)

    • hive.s3.aws-access-keyhive.s3.aws-secret-key (S3 ファイルへのアクセス用)

    この資格情報は、Kubernetes シークレットの定義 mpp-credentials に新しい環境変数を追加することによって構成できます。このシークレットは、Denodo Lakehouse Accelerator のデプロイの資格情報を管理するために使用されます。 mpp-credentials の構成の詳細については、「 デプロイ 」のページを参照してください。

    次のコマンドは、シークレット内に AWS_SECRET という名前の新しい環境変数を定義する方法を示しています。

    kubectl create secret generic mpp-credentials --from-literal=AWS_SECRET=<credential>
    

    シークレット内に環境変数を定義したら、次の構文を使用して、 values.yaml ファイルまたはカタログのプロパティファイル内でその環境変数を参照できます。

    glue-iceberg: |-
       .
       .
       hive.metastore.glue.aws-secret-key=${ENV:AWS_SECRET}
       .
       .
    
  2. IAM ロール (引き受けたロール):

    • hive.metastore.glue.iam-role (Glue へのアクセス用)

    • hive.s3.iam-role (S3 ファイルへのアクセス用)

これらのプロパティを values.yaml ファイルまたは .properties ファイルのカタログ定義に追加する必要があります。

AWS Glue Data Catalog にアクセスするための AWS の権限

Denodo Lakehouse Accelerator で使用される IAM ロールまたは AWS 資格情報には、AWS Glue Data Catalog にアクセスするための適切な AWS 権限が必要です。

  • AWS Glue からの読み込み。IAM ロール/ユーザーには以下の最小限の権限が必要です。

    • glue:GetDatabases

    • glue:GetDatabase

    • glue:GetTables

    • glue:GetTable

    • glue:GetPartitions

    • glue:GetPartition

    • glue:BatchGetPartition

  • AWS Glue への書き込み。読み込み権限に加え、IAM ロール/ユーザーには以下の権限も必要です。

    • glue:CreateTable

    • glue:DeleteTable

    • glue:UpdateTable

    • glue:BatchCreatePartition

    • glue:UpdatePartition

    • glue:DeletePartition

: 関連する IAM ロール/ユーザーに、データファイルが保存されている特定の S3 バケットに対する必要な S3 権限 (s3:GetObjects3:PutObject など) もあることを確認してください。

Add feedback