建立資料表

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

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

除了查詢引擎整合外,Lakehouse 執行階段目錄也實作了開放原始碼 Iceberg REST 目錄 API 規格 (POST /v1/{prefix}/namespaces/{namespace}/tables),可讓相容的 REST 用戶端直接建立資料表。

事前準備

請參閱表格總覽,瞭解不同類型的表格,以及使用這些表格的影響。

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

  2. 啟用 BigLake API。

    啟用 API 時所需的角色

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

    啟用 API

必要的角色

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

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

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

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

建立資料表

建立 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;")

spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()

替換下列值:

  • NAMESPACE_NAME命名空間的名稱
  • TABLE_NAME:資料表名稱

Trino

CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);

DESCRIBE SCHEMA_NAME.TABLE_NAME;

替換下列值:

  • SCHEMA_NAME結構定義的名稱
  • TABLE_NAME:資料表名稱

如果您使用 BigQuery 目錄聯盟搭配 Trino,就無法指定資料表的位置。系統一律會使用結構定義的預設位置。

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:Lakehouse 執行階段目錄的 ID。
  • NAMESPACE_NAME:目錄命名空間名稱。

後續步驟