變更資料表可讓您更新結構定義 (例如新增資料欄),以及更新資料表中繼資料屬性。
修改作業由 Lakehouse 執行階段目錄管理,並透過開放原始碼 Iceberg REST 目錄 API 規格 (POST /v1/{prefix}/namespaces/{namespace}/tables/{table}適用於 CommitTable/UpdateIcebergTable) 提交。
事前準備
請參閱表格總覽,瞭解不同類型的表格,以及使用這些表格的影響。
-
啟用 BigLake API。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。
必要的角色
如要取得變更資料表所需的權限,請要求管理員在專案和儲存空間 bucket 中授予您下列 IAM 角色:
-
在憑證販售模式中變更資料表:
BigLake 編輯者 (
roles/biglake.editor) - 專案 -
在非憑證臨時配發模式下變更資料表:
- BigLake 編輯者 (
roles/biglake.editor) - 專案 - Storage 物件使用者 (
roles/storage.objectUser) - Cloud Storage 值區
- BigLake 編輯者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
變更資料表
在表格中新增資料欄:
控制台
前往 Google Cloud 控制台的「Lakehouse」Lakehouse。
選取現有目錄,或建立目錄 (如果沒有)。
在「命名空間詳細資料」表格中,選取資料表並展開選單選項。
按一下 [編輯]。
在對話方塊中更新表格值。
按一下 [儲存]。
Spark
spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Trino
ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;
REST
如要使用 REST API 將變更提交至 Iceberg 表格,請對 UpdateIcebergTable (CommitTable) 端點發出 POST 要求:
POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME
要求主體必須包含有效的 Iceberg CommitTableRequest JSON 酬載,定義基本需求和要套用的中繼資料更新清單。
更改下列內容:
PROJECT_ID:您的 Google Cloud 專案 ID。CATALOG_ID:Lakehouse 執行階段目錄的 ID。NAMESPACE_NAME:目錄命名空間名稱。TABLE_NAME:Iceberg 資料表的名稱。
後續步驟
- 瞭解如何刪除資料表。