Lakehouse ランタイム カタログを使用すると、Cloud Storage に Apache Iceberg テーブルを作成し、BigQuery、Apache Spark、Trino、Iceberg REST API でクエリと変更を行うことができます。明示的なストレージ パスを指定せずにテーブルを作成すると、Lakehouse ランタイム カタログは、名前空間とテーブル識別子を追加して、メタデータとデータ ディレクトリをカタログ エンドポイントのデフォルトの Cloud Storage ロケーションに自動的に配置します。
新しいストレージ ディレクトリを作成せずに既存の Apache Iceberg テーブルを登録するには、テーブルを登録するをご覧ください。
始める前に
-
BigLake API を有効にします(有効になっていない場合)。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。 - Apache Iceberg REST カタログ エンドポイントを使用して Lakehouse ランタイム カタログを設定します。自動テーブル管理を有効にするには、カタログで認証情報提供モードが使用されていることを確認します。
必要なロール
テーブルの作成に必要な権限を取得するには、プロジェクトとストレージ バケットに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
テーブルを作成する:
- BigLake 管理者(
roles/biglake.admin)- プロジェクト - ストレージ管理者(
roles/storage.admin)- ターゲット Cloud Storage バケット
- BigLake 管理者(
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
カタログ エンドポイントが認証情報自動販売モードを使用し、その Cloud Storage バケットが VPC Service Controls サービス境界で保護されている場合は、テーブルを作成する前に、カタログ エンドポイントのサービス アカウントに上り(内向き)ルールを構成する必要があります。詳細については、認証情報の自動販売で VPC Service Controls を使用するをご覧ください。
テーブルの機能とサポート
Lakehouse ランタイム カタログでテーブルを使用する場合は、さまざまなテーブルタイプとそのオプトイン機能を理解しておくと便利です。Apache Iceberg テーブルの使用方法については、Apache Iceberg テーブルの概要をご覧ください。
サポートされている Iceberg テーブル
Apache Iceberg V2(一般提供)テーブルと V3(プレビュー)テーブルのみがサポートされています。Iceberg V1 テーブルはサポートされていません。既存の V1 テーブルをアップグレードするには、Iceberg V1 テーブルを V2 にアップグレードするをご覧ください。
テーブル オプションを使用する(プレビュー)
特定のテーブル プロパティを構成することで、BigQuery データ操作言語(DML)や自動テーブル管理などの BigQuery マネージド機能を使用するようにオプトインできます。これらの機能は、テーブルが作成される場所に応じて異なる方法で有効になります。
- BigQuery から: BigQuery DML と自動テーブル管理はデフォルトで有効になっています。
- オープンソース エンジンから: オプトインするには、テーブル プロパティを明示的に構成する必要があります。詳細については、テーブル オプションを構成するをご覧ください。
テーブルを作成する
Iceberg テーブルを作成する。自動テーブル管理(gcp.biglake.table-management.enabled)を有効にするには、カタログで認証情報ベンディング モードを使用する必要があります。
コンソール
Google Cloud コンソールで [Lakehouse] に移動します。
既存のカタログを選択するか、カタログがない場合は作成します。
既存の名前空間を選択するか、名前空間がない場合は作成します。
メニューバーで [+ テーブルを作成] をクリックします。
[テーブル形式] で [Iceberg] を選択します。
[テーブル名] に、一意のテーブル名を入力します。
省略可: [プロパティ] セクションで、テーブルのプロパティを構成します。このセクションでは、
gcp.biglake.bigquery-dml.enabledやgcp.biglake.table-management.enabledなどの事前定義されたプロパティについて説明します。たとえば、これらの値を
trueに変更して、BigQuery DML またはテーブル管理を有効にできます。テーブル管理では、圧縮やスナップショットの有効期限などのバックグラウンド タスクが実行されます。詳細については、テーブル オプションを構成するをご覧ください。[作成] をクリックします。
テーブルが [Namespace の詳細] ページに表示されます。
Spark
spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")
次の値を置き換えます。
NAMESPACE_NAME: 名前空間の名前。TABLE_NAME: テーブルの名前。
読み取り / 書き込みの相互運用性とテーブル管理(プレビュー)を有効にするには、TBLPROPERTIES 句にプロパティを追加します。
TBLPROPERTIES (
'gcp.biglake.bigquery-dml.enabled' = true,
'gcp.biglake.table-management.enabled' = true
)
Trino
CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);
次の値を置き換えます。
SCHEMA_NAME: スキーマの名前。TABLE_NAME: テーブルの名前。
読み取り / 書き込みの相互運用性とテーブル管理(プレビュー)を有効にするには、次のプロパティを WITH 句に追加します。
WITH (
"gcp.biglake.bigquery-dml.enabled" = 'true',
"gcp.biglake.table-management.enabled" = 'true'
)
gcloud
Google Cloud CLI を使用してテーブルを作成するには、gcloud biglake iceberg tables create コマンドを実行します。
gcloud biglake iceberg tables create \
--project="PROJECT_ID" \
--catalog="CATALOG_ID" \
--namespace="NAMESPACE_NAME" \
--create-from-file="TABLE_DEFINITION_FILE"
次のように置き換えます。
PROJECT_ID: 実際の Google Cloudプロジェクト ID。CATALOG_ID: カタログの ID。NAMESPACE_NAME: カタログの名前空間の名前。TABLE_DEFINITION_FILE: Iceberg テーブル定義を含む JSON ファイルのパス。
BigQuery
BigQuery から Lakehouse ランタイム カタログに Apache Iceberg テーブルを作成するには、次の GoogleSQL CREATE TABLE ステートメントを使用します。BigQuery からテーブルを作成すると、BigQuery DML とテーブル管理がデフォルトで有効になります。自動テーブル管理を使用するには、カタログで認証情報自動販売モードを使用する必要があります。
CREATE TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` (id int, data string);
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。CATALOG_ID: Lakehouse ランタイム カタログ ID。NAMESPACE: Iceberg 名前空間の名前。TABLE_NAME: Iceberg テーブルの名前。
REST
REST API を使用して Iceberg テーブルを作成するには、CreateIcebergTable エンドポイントに POST リクエストを送信します。
POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables
リクエストの本文には、テーブル スキーマ、パーティション仕様、初期プロパティを定義する有効な Iceberg CreateTableRequest JSON ペイロードが含まれている必要があります。
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。CATALOG_ID: カタログの ID。NAMESPACE_NAME: カタログの名前空間の名前。
次のステップ
- テーブルを一覧表示する方法を学習する。
- テーブルにデータを挿入する方法を学習する。
- テーブル ACL を管理する方法を学習する。