Apache Iceberg テーブルを作成すると、Lakehouse ランタイム カタログの名前空間内に新しいテーブル メタデータとストレージが初期化されます。
既存の Apache Iceberg テーブルをカタログで使用できるようにするには、テーブルを登録するをご覧ください。
テーブルの作成時に名前空間レベルまたはテーブルレベルで明示的なストレージ ロケーションを指定しない場合、システムは、名前空間とテーブルの識別子を追加して、カタログのデフォルト ロケーション(カタログのベース Cloud Storage バケットから派生)にテーブルのメタデータ ディレクトリとデータ ディレクトリを自動的に作成します。
始める前に
-
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 管理者(
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
テーブルの機能とサポート
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 を管理する方法を学習する。