BigQuery 的自訂 Apache Iceberg 目錄端點,可將 Apache Spark 和 Apache Flink 等開放原始碼查詢引擎,連結至 Lakehouse 執行階段目錄。只要整合自訂目錄外掛程式 (BigQueryMetastoreCatalog),這個端點就能讓您直接透過 BigQuery 管理及查詢 Apache Iceberg 資料表中繼資料,同時將資料和中繼資料檔案儲存在 Cloud Storage。
自訂 Iceberg 目錄的運作方式
自訂 Apache Iceberg 目錄會使用 JAR 程式庫中提供的自訂目錄實作 (org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog)。當運算工作負載在 Managed Service for Apache Spark 上執行時,引擎會使用這個外掛程式與 BigQuery 互動,將 BigQuery 做為 Apache Iceberg 資料表的中繼資料儲存庫。
工作流程的運作方式如下:
- 目錄實作:查詢引擎會載入 BigQuery Metastore 目錄 JAR,並設定 Spark 工作階段目錄屬性,以使用
org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog。 - 中繼資料管理:使用 Spark SQL 或 DataFrame API 建立或修改資料表時,外掛程式會將資料集和資料表定義儲存在 BigQuery 中。
- 資料儲存庫:Apache Iceberg 中繼資料檔案 (
metadata.json、資訊清單清單、資訊清單) 和資料檔案 (例如 Parquet 檔案) 會直接儲存在指定的 Cloud Storage 倉儲路徑。 - 跨引擎存取:由於中繼資料已在 BigQuery 註冊,因此您可以透過 Spark 等開放原始碼引擎,以及直接從 BigQuery 查詢資料表。
資源階層結構
BigQuery 端點的自訂 Apache Iceberg 目錄會將中繼資料整理成下列階層:
| 資源 | 說明 |
|---|---|
| 專案 | Google Cloud 專案,其中包含 BigQuery 資源和 Cloud Storage 倉儲儲存空間。 |
| 命名空間 (資料集) | BigQuery 資料集,設定為 Iceberg 命名空間,定義在其中建立的資料表預設 Cloud Storage 位置。 |
| 資料表 | Apache Iceberg 資料表的結構定義、快照和中繼資料指標會在 BigQuery 中追蹤,資料檔案則位於 Cloud Storage。 |
比較自訂 Iceberg 目錄和 Iceberg REST 目錄
下表摘要說明 BigQuery 端點的自訂 Apache Iceberg 目錄,與 Apache Iceberg REST 目錄端點之間的主要差異:
| 功能 | BigQuery 的自訂 Iceberg 目錄 | Apache Iceberg REST 目錄端點 (建議) |
|---|---|---|
| Catalog API 標準 | 自訂外掛程式 (BigQueryMetastoreCatalog) |
開放標準 Apache Iceberg REST Catalog API |
| 目錄階層 | 專案 > BigQuery 資料集 > 資料表 | 專案 > 目錄 > 命名空間 > 資料表 (P.C.N.T) |
| 儲存空間設定 | 為每個資料集或資料表指定的 Cloud Storage 路徑 | 多值區或單一值區目錄 |
| 憑證臨時配發 | 不支援 (使用直接 IAM 憑證) | 支援 (提供短期儲存空間存取權杖) |
| 災難復原 | 不支援 | 支援 (跨區域複製和容錯移轉) |
| 推薦學習對象 | 現有部署作業和工作流程 | 新工作負載和標準 Iceberg REST 用戶端整合 |
後續步驟
- 使用 Apache Iceberg 1.10 以上版本設定執行階段目錄。
- 使用 Apache Iceberg 1.9 以下版本設定執行階段目錄。
- 建立及管理目錄資源。
- 搭配使用執行階段目錄與 BigQuery 資料表。
- 使用 Apache Spark 預存程序。
- 自訂其他目錄功能。