建立資料表

建立 Apache Iceberg 資料表時,系統會在 Lakehouse 執行階段目錄的命名空間中登錄資料表的中繼資料。

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

事前準備

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

  2. 啟用 BigLake API。

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    啟用 API

  3. 使用 Apache Iceberg REST 目錄端點設定 Lakehouse 執行階段目錄

必要的角色

如要取得建立表格所需的權限,請要求管理員授予您專案和儲存空間 bucket 的下列 IAM 角色:

  • 全部:
    • BigLake 管理員 (roles/biglake.admin) - 您的專案
    • Storage 管理員 (roles/storage.admin) - 目標 Cloud Storage 值區

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

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

表格功能和支援

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

支援的 Iceberg 資料表

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

使用表格選項 (預覽版)

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

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

建立資料表

建立 Iceberg 資料表。

控制台

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

    前往 Lakehouse

  2. 選取現有目錄,或建立目錄 (如果沒有的話)。

  3. 按一下選單列中的「+ 建立資料表」

  4. 在「Table format」(資料表格式) 部分,選取「Iceberg」

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

  6. 點選「建立」

資料表會顯示在「命名空間詳細資料」頁面上。

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

如要使用 gcloud 建立資料表,請執行 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:目錄命名空間的名稱。

後續步驟