Google Cloud コンソールを使用して Lakehouse で Iceberg テーブルを作成してクエリを実行する
このクイックスタートでは、 Google Cloud コンソールを使用して、ボーダーレス Lakehouse が Google Cloud とオープンソース エンジン間で Apache Iceberg テーブルを管理および共有する方法を学習します。これには、スキーマ、スナップショット、ストレージの場所などのテーブル メタデータを Lakehouse ランタイム カタログに保存します。
このクイックスタートを完了するには、Google Cloud コンソールで次の手順を行います。
- Cloud Storage バケットを作成する: Cloud Storage にバケットを作成して、Iceberg テーブルのデータファイルとメタデータ ファイルを保存します。
- カタログを作成する: 認証情報ベンダーが有効になっているバケットを基盤とする Lakehouse ランタイム カタログに、複数バケット カタログを作成します。
- 名前空間と Iceberg テーブルを作成する: Google Cloud コンソールの [Lakehouse] ページで、BigQuery データ操作言語(DML)を有効にして名前空間と Iceberg テーブルを作成します。
- BigQuery でデータを変更してテーブルにクエリを実行する: BigQuery DML ステートメント(
INSERT、UPDATE、DELETE)を使用して、Iceberg テーブルの行を変更し、4 部構成の P.C.N.T(Project.Catalog.Namespace.Table)構文を使用して結果をクエリします。ETL や手動によるテーブル登録は必要ありません。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分も差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Cloud Storage, and BigQuery APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Make sure that you have the following role or roles on the project: BigLake Admin (
roles/biglake.admin), Storage Admin (roles/storage.admin), and BigQuery Job User (roles/bigquery.jobUser)Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the email address for a Google Account.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Cloud Storage, and BigQuery APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Make sure that you have the following role or roles on the project: BigLake Admin (
roles/biglake.admin), Storage Admin (roles/storage.admin), and BigQuery Job User (roles/bigquery.jobUser)Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the email address for a Google Account.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
Cloud Storage バケットを作成する
Google Cloud コンソールで Cloud Storage バケットを作成し、Iceberg テーブルのデータファイルとメタデータ ファイルを保存します。
Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
[作成] をクリックします。
[始める] セクションで、グローバルに一意のバケット名(
lakehouse-quickstart-UNIQUE_IDやPROJECT_ID-lakehouseなど)を入力し、[続行] をクリックします。[データの保存場所の選択] セクションで、[ロケーション タイプ] を [マルチリージョン]([US(米国の複数のリージョン)])のままにして、[作成] をクリックします。
[公開アクセスの防止] ダイアログが表示されたら、[確認] をクリックします。
Lakehouse ランタイム カタログにカタログを作成する
Apache Iceberg テーブル用に Lakehouse ランタイム カタログにマルチバケット カタログを作成します。マルチバケット カタログを使用すると、バケット名とは無関係にカタログに名前を付け、複数の Cloud Storage バケットを 1 つのカタログに関連付けることができます。これらのバケットへのアクセスを保護するには、カタログがクライアント エンジンに一時的なストレージ認証情報を直接自動的に発行できるように、認証情報払い出しモードを有効にします。
Google Cloud コンソールで、[Lakehouse] ページに移動します。
[カタログを作成] をクリックし、[Lakehouse ランタイム カタログ] を選択します。
[カタログの詳細] セクションで、次の設定を構成します。
- カタログのタイプ: [Iceberg Rest カタログ] を選択します。
- Lakehouse カタログ バケットのオプション: [複数バケット カタログ] を選択します。
- デフォルトのカタログ Cloud Storage パス: [参照] をクリックし、作成したバケットを選択して、[選択] をクリックします。
- カタログ ID: 「
quickstart_catalog」と入力します。 - プライマリ ロケーション: [マルチリージョン] を選択してから、[US(米国の複数のリージョン)] を選択します。
[続行] をクリックし、[データパス] セクションで [続行] をクリックします。
[認証方法] セクションで、[認証情報ベンダーモード] を選択します。
認証情報のベンディングを使用すると、カタログは一時的なテーブル スコープのストレージ トークンをクライアント エンジンと BigQuery に安全に発行するため、外部エンジンはバケットに対する IAM 権限を直接必要としません。
[作成] をクリックします。
カタログが作成され、[カタログの詳細] ページが開きます。
[認証方法] で、[バケットの権限を設定] をクリックし、ダイアログで [確認] をクリックします。
この手順では、カタログのサービス アカウントに、一時的な認証情報を取得するために必要な Cloud Storage バケットに対する権限を付与します。
Namespace と Iceberg テーブルを作成する
カタログを作成したので、Google Cloud コンソールの [Lakehouse] ページを使用して、名前空間と Iceberg テーブルを作成します。
名前空間の作成
quickstart_catalogの [カタログの詳細] ページで、 [Namespace を作成] をクリックします。[Namespace name] フィールドに「
quickstart_namespace」と入力します。[ロケーション] は、フィールドに自動的に入力されるデフォルトの Cloud Storage パスのままにします。
[作成] をクリックします。
Iceberg テーブルを作成する
[カタログの詳細] ページで、
quickstart_namespaceをクリックします。[Namespace の詳細] ページが開きます。
[テーブルを作成] をクリックします。
[テーブルを作成] ペインで、次の設定を構成します。
- テーブル形式: [Iceberg] が選択されていることを確認します。
- テーブル名: 「
quickstart_table」と入力します。 - ロケーション: デフォルトの Cloud Storage パスのままにします。
[スキーマ] で、[フィールドを追加] を 2 回クリックして、テーブルに 2 つの列を追加します。
- 最初のフィールドの [フィールド名] フィールドに「
id」と入力し、[タイプ] メニューから [INTEGER] を選択します。 - 2 つ目のフィールドで、[フィールド名] フィールドに「
name」と入力し、[タイプ] メニューから [STRING] を選択します。
- 最初のフィールドの [フィールド名] フィールドに「
[プロパティ] で、事前定義された
gcp.biglake.bigquery-dml.enabledプロパティを見つけ、その [値] をfalseからtrueに変更します。gcp.biglake.table-management.enabledはfalseに設定したままにします。gcp.biglake.bigquery-dml.enabledをtrueに設定すると、INSERT、UPDATE、DELETE、MERGEなどの BigQuery DML ステートメントを使用して Iceberg テーブルのデータを変更できます。詳細については、テーブル オプションを構成するをご覧ください。[作成] をクリックします。
新しい Iceberg テーブル(
quickstart_table)が [Namespace details] ページに表示され、Lakehouse ランタイム カタログが最初の Iceberg メタデータ ファイルを Cloud Storage バケットに書き込みます。
BigQuery でデータを変更してテーブルをクエリする
quickstart_table を作成して BigQuery DML を有効にすると、4 部構成の P.C.N.T(Project.Catalog.Namespace.Table)構文を使用して、BigQuery で行を直接挿入、更新、削除、クエリできます。各ステートメントで、PROJECT_ID を実際のGoogle Cloud プロジェクト ID に置き換えます。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、[ SQL クエリ] をクリックします。
3 行のサンプルデータを挿入します。
INSERT INTO `PROJECT_ID.quickstart_catalog.quickstart_namespace.quickstart_table` (id, name) VALUES (1, 'one'), (2, 'two'), (3, 'three');
[実行] をクリックします。
INSERTステートメントが完了すると、BigQuery は Parquet データファイルを Cloud Storage バケットに書き込み、新しい Iceberg スナップショットを Lakehouse ランタイム カタログに commit します。テーブル内の行を変更します。
UPDATE `PROJECT_ID.quickstart_catalog.quickstart_namespace.quickstart_table` SET name = 'updated' WHERE id = 1;
[実行] をクリックします。
テーブルから行を削除します。
DELETE FROM `PROJECT_ID.quickstart_catalog.quickstart_namespace.quickstart_table` WHERE id = 3;
[実行] をクリックします。
テーブルに対してクエリを実行して、変更を確認します。
SELECT * FROM `PROJECT_ID.quickstart_catalog.quickstart_namespace.quickstart_table` ORDER BY id;
[実行] をクリックします。[クエリ結果] ペインに、
id = 1の更新された値を含む残りの 2 行が表示されます。+----+---------+ | id | name | +----+---------+ | 1 | updated | | 2 | two | +----+---------+
Lakehouse ランタイム カタログが Iceberg メタデータを管理し、認証情報ベンダーが有効になっているため、バケットへの IAM アクセスを直接付与することなく、Apache Spark、Trino、Apache Flink などの Iceberg 互換のオープンソース エンジンを使用して quickstart_table から読み取りまたは quickstart_table に書き込むこともできます。
クリーンアップ
Google Cloud アカウントに不要な料金が発生しないようにするには、このクイックスタートで作成したリソースを削除します。テーブル、Namespace、カタログを削除すると、Lakehouse ランタイム カタログからメタデータ登録が削除されます。バケットを削除すると、Cloud Storage に保存されている基盤となる Parquet データと Iceberg メタデータ ファイルが削除されます。
Google Cloud コンソールで、[Lakehouse] ページに移動します。
カタログからテーブルを削除します。
- [
quickstart_catalog]、[quickstart_namespace] の順にクリックします。 - [Namespace details] テーブルの
quickstart_tableの行で、 [その他> 削除] をクリックします。 - 「
DELETE」と入力して確定し、[削除] をクリックします。
- [
カタログから Namespace を削除します。
quickstart_catalogの [カタログの詳細] ページに戻ります。quickstart_namespaceの行で、 [その他の Namespace アクション] > [削除] をクリックします。- 「
DELETE」と入力して確定し、[削除] をクリックします。
カタログを削除します。
- [Lakehouse] ページに戻ります。
quickstart_catalogの行で、 [その他のカタログ操作] > [削除] をクリックします。- 「
DELETE」と入力して確定し、[削除] をクリックします。
Cloud Storage バケットとその内容をすべて削除します。
Cloud Storage の [バケット] ページに移動します。
このクイックスタート用に作成したバケットの横にあるチェックボックスをオンにして、[削除] をクリックします。
「
DELETE」と入力して確定し、[削除] をクリックします。
次のステップ
- Google Cloud CLI を使用して Iceberg テーブルを作成してクエリを実行するクイックスタートを試す。
- BigQuery DML ステートメントを使用してデータを変更する方法と、テーブル オプションを構成する方法を学習する。
- クロスクラウド データ アクセスの設定に関する Codelabを試して、ETL を使用せずに Amazon Web Services(AWS)、AlloyDB for PostgreSQL、Cloud Storage 全体でデータをクエリします。
- マルチバケット カタログと Apache Iceberg REST カタログ エンドポイントについて学習する。
- Lakehouse ランタイム カタログでカタログを管理する方法を学習する。
- Lakehouse で管理される Apache Iceberg テーブルについて学習する。