外部データ カタログから Apache Iceberg 用 Lakehouse REST カタログ テーブルにメタデータを移行する

このドキュメントでは、外部データ カタログから Apache Iceberg 用 Lakehouse REST カタログ テーブルにメタデータを移行する方法について説明します。BigQuery Migration Service は、次の外部メタストアからのメタデータの移行をサポートしています。

  • Apache Hive メタストア
  • Apache Iceberg REST カタログ

制限事項

  • 外部データ カタログから Apache Iceberg 用 Lakehouse REST カタログ テーブルへのメタデータの移行は、1 回限りの同期です。この機能は継続的または定期的な同期をサポートしていないため、移行後に行われた書き込みは、再度移行するまで表示されません。
  • ネストされた名前空間はサポートされていません。
  • Iceberg REST カタログは Parquet データファイルのみをサポートしています。
  • Lakehouse は Apache Iceberg V3 テーブルをサポートしていません。
  • 外部データ カタログから Apache Iceberg 用 Lakehouse REST カタログ テーブルへのメタデータの移行では、最大 10,000 個のテーブルの移行のみがサポートされます。ワークロードで 10,000 個を超えるテーブルを処理する必要がある場合は、ワークロードを複数の移行に分割することをおすすめします。
  • 外部データ カタログから Apache Iceberg 用 Lakehouse REST カタログ テーブルへのメタデータの移行では、組織の ポリシーを使用してドメイン制限付き 共有を適用することはできません。

始める前に

外部データ カタログからメタデータを移行する前に、次のセクションの手順を行う必要があります。

API を有効にする

BigLake、BigQuery Data Transfer、BigQuery Migration、Secret Manager、Storage Transfer API を有効にします。

API を有効にするために必要なロール

API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

API を有効にする

Data Transfer API を有効にすると、サービス エージェントが 作成されます。

権限を構成する

  1. 転送を作成するユーザーまたはサービス アカウントには、BigQuery 管理者ロール(roles/bigquery.admin)が付与されている必要があります。サービス アカウントを使用する場合、転送の作成にのみ使用されます。
  2. Data Transfer API を有効にすると、サービス エージェント (P4SA)が作成されます。

    サービス エージェントに Hive Metastore 転送を実行するために必要な 権限が付与されるように、 プロジェクトのサービス エージェントに次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をサービス エージェントに付与することもできます。

  3. サービス アカウントを使用している場合は、次のコマンドを使用して、サービス エージェントに roles/iam.serviceAccountTokenCreator ロールを付与します。

    gcloud iam service-accounts add-iam-policy-binding
    SERVICE_ACCOUNT --member
    serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role
    roles/iam.serviceAccountTokenCreator
  4. プロジェクトで、Storage Transfer Service サービス エージェント (project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com)に次のロールを付与します。

    • roles/storage.admin
    • オンプレミス/HDFS から移行する場合は、roles/storagetransfer.serviceAgent ロールも付与する必要があります。

    より詳細な権限を構成することもできます。詳細については、次のガイドをご覧ください。

必要なユーザーロールと権限

サービス エージェントに Apache Iceberg 用 Lakehouse REST カタログ テーブルの移行を作成、変更、実行するために必要な 権限が付与されるように、ユーザーのサービス エージェントに次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をサービス エージェントに付与することもできます。

必要なサービス アカウントのロールと権限

お客様が提供するサービス アカウントに Apache Iceberg 用 Lakehouse REST カタログ テーブルの移行を作成、変更、実行するために必要な 権限が付与されるように、お客様が提供するサービス アカウントに次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をお客様が提供するサービス アカウントに付与することもできます。

次のコマンドを使用して、サービス エージェントに roles/iam.serviceAccountTokenCreator ロールも付与する必要があります。

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member user:bigquerymigration-management-borg@prod.google.com --role roles/iam.serviceAccountTokenCreator --project PROJECT_ID
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member bigquerymigration-managementworker-borg@prod.google.com --role roles/iam.serviceAccountTokenCreator --project PROJECT_ID

次のように置き換えます。

  • SERVICE_ACCOUNT: サービス アカウントの ID
  • PROJECT_ID: プロジェクト ID

シークレットを構成する

Apache Iceberg REST カタログに移行する場合は、移行を承認するためのシークレットを作成する必要があります。シークレットは次の形式でフォーマットする必要があります。

{
  "client_id": "CLIENT_ID",
  "client_secret": "CLIENT_SECRET<",
  "polaris_realm": "POLARIS_REALM"
  "scope": "SCOPE"
}

次のように置き換えます。

  • CLIENT_ID: OAuth2.0 クライアント ID
  • CLIENT_SECRET: OAuth2.0 クライアント シークレット
  • POLARIS_REALM: Polaris カタログのレルム。このフィールドは Apache Polaris でのみ必要です。例: FINANCE
  • SCOPE: (省略可)OAuth2.0 スコープ。デフォルト値は PRINCIPAL_ROLE:ALL です。

Lakehouse カタログを作成する

Lakehouse カタログを作成します。 移行されたメタデータは、カタログの作成時に指定した Cloud Storage バケットに保存されます。

メタデータを移行する

Lakehouse Iceberg REST カタログ テーブルへのメタデータの移行を開始するには、次の操作を行います。

  1. コンソールで、[移行] [>] [サービス] ページに移動します。 Google Cloud

    移行サービスに移動

  2. [オープン レイクハウスの登録または移行] で、[移行を作成] をクリックします。

  3. [移行構成] で、次の操作を行います。

    1. カタログタイプとして、外部カタログを選択します。
    2. [**リージョン**] でリージョンを選択します。選択したリージョンによって、移行オーケストレーションとデータ転送が実行される場所が決まります。また、移行サービスがネットワーク アタッチメントやシークレットなどのリソースを使用または作成する場所も決まります。

      リージョン シークレットのみがサポートされています。シークレットのリージョンは、このフィールドのリージョンと一致する必要があります。

    3. [**移行の表示名**] に、この移行の名前を入力します。

  4. [ソースシステムの構成] で、次の操作を行います。

    1. [URL] に、 Apache Iceberg または Apache Hive メタストアのエントリ ポイントとして機能するベース エンドポイント URL を入力します。
    2. [**サービス アカウント**] で、リストからサービス アカウントを選択します。 指定しない場合、この移行はユーザー認証情報を使用して実行されます。
    3. (省略可)[**ネットワーク アタッチメント**] で、ネットワーク アタッチメントを選択します。
  5. [続行] をクリックします。

メタデータの移行が完了すると、外部カタログのメタデータ は、Lakehouse カタログの作成時に指定した Cloud Storage バケットに保存されます。

料金

Lakehouse Iceberg REST カタログ テーブルへのメタデータの転送に費用はかかりません。メタデータが転送されると、 Lakehouse の料金 が適用されます。