使用 Apache Iceberg 專用 BigLake 資料表

Apache Iceberg 專用 BigLake 資料表 (以下簡稱「BigLake Iceberg 資料表」) 是您從開放原始碼引擎建立並儲存在 Cloud Storage 中的 Iceberg 資料表。與使用 BigLake 中繼存放區的所有資料表一樣,開放原始碼引擎和 BigQuery 都能讀取這些資料表。不過,只有建立資料表的開放原始碼引擎可以寫入資料表。

事前準備

  1. Verify that billing is enabled for your Google Cloud project.

  2. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

必要的角色

如要取得管理 BigLake Iceberg 資料表所需的權限,請要求管理員授予下列 IAM 角色:

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

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

建立 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 定價」一文。

後續步驟