建立資料表

建立 Apache Iceberg 資料表時,系統會在 Lakehouse 執行階段目錄的命名空間中,初始化新的資料表中繼資料和儲存空間。

如要在目錄中提供現有的 Apache Iceberg 資料表,請參閱「註冊資料表」。

如果在建立資料表時,未在命名空間或資料表層級明確指定儲存位置,系統會自動在目錄的預設位置 (衍生自目錄的基本 Cloud Storage bucket) 下,附加命名空間和資料表 ID,建構資料表的中繼資料和資料目錄。

事前準備

  1. 確認 Google Cloud 專案已啟用計費功能。

  2. 啟用 BigLake API (如果尚未啟用)。

    啟用 API 所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  3. 使用 Apache Iceberg REST 目錄端點設定 Lakehouse 執行階段目錄。如要啟用自動資料表管理功能,請確認目錄使用憑證販售模式。

必要的角色

如要取得建立資料表所需的權限,請要求管理員在專案和 Storage bucket 中,授予您下列 IAM 角色:

  • 建立資料表:
    • BigLake 管理員 (roles/biglake.admin) - 您的專案
    • 儲存空間管理員 (roles/storage.admin) - 目標 Cloud Storage bucket

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

表格功能和支援

使用 Lakehouse 執行階段目錄中的資料表時,建議您瞭解不同的資料表類型及其選擇加入功能。如要進一步瞭解如何使用 Apache Iceberg 資料表,請參閱「Apache Iceberg 資料表總覽」。

支援的 Iceberg 資料表

僅支援 Apache Iceberg V2 (正式發布版) 和 V3 (預先發布版) 資料表。不支援 Iceberg V1 資料表。如要升級現有的 V1 資料表,請參閱「將 Iceberg V1 資料表升級至 V2」。

使用表格選項 (預先發布版)

您可以設定特定資料表屬性,選擇使用 BigQuery 代管功能,例如 BigQuery 資料操縱語言 (DML) 和自動資料表管理。啟用這些功能的方式,取決於資料表的建立位置:

  • 從 BigQuery:BigQuery DML 和自動資料表管理功能預設為啟用。
  • 開放原始碼引擎:如要選擇加入,必須明確設定資料表屬性。詳情請參閱「設定表格選項」。

建立資料表

建立 Iceberg 資料表。如要啟用自動資料表管理 (gcp.biglake.table-management.enabled),目錄必須使用憑證販售模式。

控制台

  1. 前往 Google Cloud 控制台的「Lakehouse」Lakehouse。

    前往「Lakehouse」

  2. 選取現有目錄,如果沒有,請建立一個。

  3. 選取現有的命名空間,或建立新的命名空間。

  4. 在選單列中,點選「+ 建立資料表」。

  5. 在「資料表格式」部分,選取「Iceberg」。

  6. 在「Table name」(資料表名稱) 部分,輸入不重複的資料表名稱。

  7. 選用:在「Properties」(屬性) 區段中,設定表格屬性。本節列出預先定義的屬性,例如 gcp.biglake.bigquery-dml.enabled 和 gcp.biglake.table-management.enabled。

    舉例來說,您可以將這些值變更為 true,啟用 BigQuery DML 或資料表管理功能。資料表管理會執行背景工作,例如壓縮和快照到期。詳情請參閱「設定資料表選項」。

  8. 點選「建立」。

表格會顯示在「Namespace details」(命名空間詳細資料) 頁面。

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:JSON 檔案的路徑,其中包含 Iceberg 資料表定義。

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:目錄命名空間的名稱。

後續步驟