Apache Iceberg 專用 BigLake 資料表 (以下簡稱「BigLake Iceberg 資料表」) 是您從開放原始碼引擎建立並儲存在 Cloud Storage 中的 Iceberg 資料表。與使用 BigLake 中繼存放區的所有資料表一樣,開放原始碼引擎和 BigQuery 都能讀取這些資料表。不過,只有建立資料表的開放原始碼引擎可以寫入資料表。
事前準備
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigLake API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
必要的角色
如要取得管理 BigLake Iceberg 資料表所需的權限,請要求管理員授予下列 IAM 角色:
-
建立及刪除資料表:
-
BigLake 管理員 (
roles/biglake.admin) 專案 -
Cloud Storage 值區的儲存空間管理員 (
roles/storage.admin)
-
BigLake 管理員 (
-
以憑證販售模式讀取資料表資料:
專案的 BigLake 檢視者 (
roles/biglake.viewer) -
以憑證販售模式寫入資料表資料:
專案的 BigLake 編輯器 (
roles/biglake.editor) -
在非憑證臨時配發模式下讀取資料表資料:
-
專案的「BigLake Viewer」(BigLake 檢視者) (
roles/biglake.viewer) -
Storage 物件檢視者 (
roles/storage.objectViewer) 在 Cloud Storage 值區上
-
專案的「BigLake Viewer」(BigLake 檢視者) (
-
在非憑證臨時配發模式下寫入資料表資料:
-
專案的 BigLake 編輯者 (
roles/biglake.editor) -
Storage 物件使用者 (
roles/storage.objectUser) Cloud Storage 值區
-
專案的 BigLake 編輯者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立 BigLake Iceberg 資料表
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:資料表名稱
列出表格
Spark
spark.sql("SHOW TABLES").show()
Trino
SHOW TABLES;
將資料插入資料表
以下範例會在資料表中插入範例資料:
Spark
spark.sql("INSERT INTO TABLE_NAME VALUES (1, \"first row\"), (2, \"second row\"), (3, \"third row\");")
Trino
INSERT INTO TABLE_NAME VALUES (1, 'first row'), (2, 'second row'), (3, 'third row');
查詢資料表
以下範例會選取資料表中的所有資料:
Spark
spark.sql("SELECT * FROM TABLE_NAME;").show()
Trino
SELECT * FROM TABLE_NAME;
BigQuery
如要從 BigQuery 查詢 BigLake Iceberg 資料表,請在查詢中使用四部分資料表名稱,格式如下:PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME。
SELECT * FROM `PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;
更改下列內容:
PROJECT_NAME:在 BigLake metastore 中擁有目錄的專案。系統會針對 Google Cloud 控制台中選取的專案收取查詢費用。BIGLAKE_CATALOG_ID:建立目錄時指定的 BigLake metastore 目錄 ID。這個 ID 會在 BigQuery 查詢中做為目錄名稱。
重要事項
這個 ID 也是 Cloud Storage 值區的名稱。
舉例來說,如果您建立 bucket 來儲存目錄,並將其命名為 iceberg-bucket,則目錄名稱和 bucket 名稱都是 iceberg-bucket。稍後在 BigQuery 中查詢目錄時,會使用 P.C.N.T 語法。例如 my-project.biglake_catalog_id.quickstart_namespace.quickstart_table。
NAMESPACE_OR_SCHEMA_NAME:使用 Spark 時的資料表命名空間,或使用 Trino 時的資料表結構定義名稱。TABLE_NAME:資料表名稱。
變更資料表
以下範例會在資料表中新增資料欄:
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;
刪除資料表
Spark
spark.sql("DROP TABLE TABLE_NAME;")
Trino
DROP TABLE TABLE_NAME;
定價
如需定價詳情,請參閱「BigLake 定價」一文。
後續步驟
- 瞭解 Iceberg REST 目錄。