建立 Apache Iceberg 資料表時,系統會在 Lakehouse 執行階段目錄的命名空間中登錄資料表的中繼資料。
如果在建立資料表時,未在命名空間或資料表層級指定明確的儲存位置,系統會自動在目錄的預設位置 (衍生自目錄的基礎 Cloud Storage 值區) 下,附加命名空間和資料表 ID,建構資料表的後設資料和資料目錄。
除了查詢引擎整合外,Lakehouse 執行階段目錄也實作了開放原始碼 Iceberg REST 目錄 API 規格 (POST /v1/{prefix}/namespaces/{namespace}/tables),可讓相容的 REST 用戶端直接建立資料表。
事前準備
請參閱表格總覽,瞭解不同類型的表格,以及使用這些表格的影響。
-
啟用 BigLake API。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。
必要的角色
如要取得建立資料表所需的權限,請要求系統管理員授予您專案和儲存空間 bucket 的下列 IAM 角色:
-
全部:
- BigLake 管理員 (
roles/biglake.admin) - 您的專案 - Storage 管理員 (
roles/storage.admin) - 目標 Cloud Storage bucket
- BigLake 管理員 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立資料表
建立 Iceberg 資料表。
控制台
前往 Google Cloud 控制台的「Lakehouse」Lakehouse。
選取現有目錄,或建立目錄 (如果沒有)。
按一下選單列中的「+ 建立資料表」。
在「Table format」(資料表格式) 部分,選取「Iceberg」。
在「Table name」(資料表名稱) 部分,輸入不重複的資料表名稱。
點選「建立」。
資料表會顯示在「命名空間詳細資料」頁面上。
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:目錄命名空間名稱。