建立 Apache Iceberg 資料表時,系統會在 Lakehouse 執行階段目錄的命名空間中,初始化新的資料表中繼資料和儲存空間。
如要在目錄中提供現有的 Apache Iceberg 資料表,請參閱「註冊資料表」。
如果在建立資料表時,未在命名空間或資料表層級明確指定儲存位置,系統會自動在目錄的預設位置 (衍生自目錄的基本 Cloud Storage bucket) 下,附加命名空間和資料表 ID,建構資料表的中繼資料和資料目錄。
事前準備
-
啟用 BigLake API (如果尚未啟用)。
啟用 API 所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。 - 使用 Apache Iceberg REST 目錄端點設定 Lakehouse 執行階段目錄。如要啟用自動資料表管理功能,請確認目錄使用憑證販售模式。
必要的角色
如要取得建立資料表所需的權限,請要求管理員在專案和 Storage bucket 中,授予您下列 IAM 角色:
-
建立資料表:
- BigLake 管理員 (
roles/biglake.admin) - 您的專案 - 儲存空間管理員 (
roles/storage.admin) - 目標 Cloud Storage bucket
- BigLake 管理員 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
表格功能和支援
使用 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),目錄必須使用憑證販售模式。
控制台
前往 Google Cloud 控制台的「Lakehouse」Lakehouse。
選取現有目錄,如果沒有,請建立一個。
選取現有的命名空間,或建立新的命名空間。
在選單列中,點選「+ 建立資料表」。
在「資料表格式」部分,選取「Iceberg」。
在「Table name」(資料表名稱) 部分,輸入不重複的資料表名稱。
選用:在「Properties」(屬性) 區段中,設定表格屬性。本節列出預先定義的屬性,例如
gcp.biglake.bigquery-dml.enabled和gcp.biglake.table-management.enabled。舉例來說,您可以將這些值變更為
true,啟用 BigQuery DML 或資料表管理功能。資料表管理會執行背景工作,例如壓縮和快照到期。詳情請參閱「設定資料表選項」。點選「建立」。
表格會顯示在「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:目錄命名空間的名稱。