外部データ カタログから 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)が必要です。詳しくは、ロールを付与する方法をご覧ください。
Data Transfer API を有効にすると、サービス エージェントが 作成されます。
権限を構成する
- 転送を作成するユーザーまたはサービス アカウントには、BigQuery 管理者ロール(
roles/bigquery.admin)が付与されている必要があります。サービス アカウントを使用する場合、転送の作成にのみ使用されます。 Data Transfer API を有効にすると、サービス エージェント (P4SA)が作成されます。
サービス エージェントに Hive Metastore 転送を実行するために必要な 権限が付与されるように、 プロジェクトのサービス エージェントに次の IAM ロールを付与するよう管理者に依頼してください。
- ストレージ転送管理者 (
roles/storagetransfer.admin) - Service Usage コンシューマー (
roles/serviceusage.serviceUsageConsumer) - ストレージ管理者 (
roles/storage.admin) -
メタデータを Lakehouse ランタイム カタログ(Iceberg REST カタログまたは Hive カタログ)に移行する場合:
BigLake 管理者 (
roles/biglake.admin) -
メタデータを Dataproc Metastore に移行する場合:
Dataproc Metastore データオーナー (
roles/metastore.metadataOwner)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
- ストレージ転送管理者 (
サービス アカウントを使用している場合は、次のコマンドを使用して、サービス エージェントに
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
プロジェクトで、Storage Transfer Service サービス エージェント (
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com)に次のロールを付与します。roles/storage.admin- オンプレミス/HDFS から移行する場合は、
roles/storagetransfer.serviceAgentロールも付与する必要があります。
より詳細な権限を構成することもできます。詳細については、次のガイドをご覧ください。
必要なユーザーロールと権限
サービス エージェントに Apache Iceberg 用 Lakehouse REST カタログ テーブルの移行を作成、変更、実行するために必要な 権限が付与されるように、ユーザーのサービス エージェントに次の IAM ロールを付与するよう管理者に依頼してください。
- サービス アカウント ユーザー (
roles/iam.serviceAccountUser) - 移行管理編集者 (
roles/bigquerymigration.migrationEditor)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をサービス エージェントに付与することもできます。
必要なサービス アカウントのロールと権限
お客様が提供するサービス アカウントに Apache Iceberg 用 Lakehouse REST カタログ テーブルの移行を作成、変更、実行するために必要な 権限が付与されるように、お客様が提供するサービス アカウントに次の IAM ロールを付与するよう管理者に依頼してください。
正しいプリンシパルにロールを付与しないと、権限エラーが発生する可能性があります。-
ネットワーク アタッチメントへのアクセス:
Compute ネットワーク管理者 (
roles/compute.networkAdmin) サービス アカウントに対する -
BigQuery Data Transfer Service へのアクセス:
BigQuery 管理者 (
roles/bigquery.admin) サービス アカウントに対する -
Lakehouse リソースへのアクセス:
BigLake 編集者 (
roles/biglake.editor) サービス アカウントに対する -
シークレットへのアクセス:
Secret Manager のシークレット アクセサー (
roles/secretmanager.secretAccessor) お客様が提供するシークレットに対する
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をお客様が提供するサービス アカウントに付与することもできます。
次のコマンドを使用して、サービス エージェントに 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: サービス アカウントの IDPROJECT_ID: プロジェクト ID
シークレットを構成する
Apache Iceberg REST カタログに移行する場合は、移行を承認するためのシークレットを作成する必要があります。シークレットは次の形式でフォーマットする必要があります。
{
"client_id": "CLIENT_ID",
"client_secret": "CLIENT_SECRET<",
"polaris_realm": "POLARIS_REALM"
"scope": "SCOPE"
}次のように置き換えます。
CLIENT_ID: OAuth2.0 クライアント IDCLIENT_SECRET: OAuth2.0 クライアント シークレットPOLARIS_REALM: Polaris カタログのレルム。このフィールドは Apache Polaris でのみ必要です。例:FINANCESCOPE: (省略可)OAuth2.0 スコープ。デフォルト値はPRINCIPAL_ROLE:ALLです。
Lakehouse カタログを作成する
Lakehouse カタログを作成します。 移行されたメタデータは、カタログの作成時に指定した Cloud Storage バケットに保存されます。
メタデータを移行する
Lakehouse Iceberg REST カタログ テーブルへのメタデータの移行を開始するには、次の操作を行います。
コンソールで、[移行] [>] [サービス] ページに移動します。 Google Cloud
[オープン レイクハウスの登録または移行] で、[移行を作成] をクリックします。
[移行構成] で、次の操作を行います。
- カタログタイプとして、外部カタログを選択します。
[**リージョン**] でリージョンを選択します。選択したリージョンによって、移行オーケストレーションとデータ転送が実行される場所が決まります。また、移行サービスがネットワーク アタッチメントやシークレットなどのリソースを使用または作成する場所も決まります。
リージョン シークレットのみがサポートされています。シークレットのリージョンは、このフィールドのリージョンと一致する必要があります。
[**移行の表示名**] に、この移行の名前を入力します。
[ソースシステムの構成] で、次の操作を行います。
- [URL] に、 Apache Iceberg または Apache Hive メタストアのエントリ ポイントとして機能するベース エンドポイント URL を入力します。
- [**サービス アカウント**] で、リストからサービス アカウントを選択します。 指定しない場合、この移行はユーザー認証情報を使用して実行されます。
- (省略可)[**ネットワーク アタッチメント**] で、ネットワーク アタッチメントを選択します。
[続行] をクリックします。
メタデータの移行が完了すると、外部カタログのメタデータ は、Lakehouse カタログの作成時に指定した Cloud Storage バケットに保存されます。
料金
Lakehouse Iceberg REST カタログ テーブルへのメタデータの転送に費用はかかりません。メタデータが転送されると、 Lakehouse の料金 が適用されます。