中繼資料聯盟是一項服務,可讓您透過單一端點存取多個中繼資料來源。
如要設定同盟,請建立同盟服務,然後設定中繼資料來源。之後,這項服務會公開單一 gRPC 端點,您可以用來存取所有中繼資料。
舉例來說,您可以使用同盟,建立透過單一端點公開多個 Dataproc Metastore 服務的 Dataproc 叢集。之後,您就能透過開放原始碼軟體 (OSS) 引擎 (例如 Spark 或 Hive) 執行大數據工作,存取多個 metastore 中的中繼資料。
聯盟的運作方式
在 Spark 或 Hive 上執行的 OSS 大數據工作負載,會在執行階段將要求傳送至 Hive Metastore API,以擷取中繼資料。
- Hive Metastore 介面支援讀取和寫入方法。同盟服務會公開 Hive Metastore 介面的 gRPC 版本。
- 在執行階段,當同盟服務收到要求時,會檢查來源排序,以擷取適當的中繼資料。
中繼資料來源
建立同盟服務時,您必須新增中繼資料來源。 您可以使用下列來源做為後端中繼存放區:
- Dataproc Metastore 執行個體。
- 包含一或多個 BigQuery 資料集的專案。
- Dataplex Universal Catalog 湖泊 (預先發布版)。
來源限制
以下章節列出使用各種中繼資料來源時必須遵守的限制。
所有來源
下列限制適用於所有中繼資料來源:
- 同盟服務不含自己的資料,而是從其中一個中繼資料來源提供中繼資料。
- 同盟服務無法做為其他同盟服務的中繼資料來源。
Dataproc Metastore
如果使用 Dataproc Metastore 做為來源,則適用下列限制:
- 聯邦服務只能透過 gRPC 端點使用。如要搭配同盟使用 Dataproc Metastore,請建立具有 gRPC 端點的中繼存放區。
同盟服務可附加至單一或多區域 Dataproc Metastore 服務。
如果多區域中繼資料存放區與同盟服務位於不同專案,請在多區域中設定的 Dataproc Metastore 執行個體上,授予同盟專案的 Dataproc Metastore 服務帳戶
metastore.services.get
權限。
BigQuery
如果您使用含有 BigQuery 資料集的專案做為來源,必須符合下列條件:
- 授予正確的 Identity and Access Management 角色,以存取含有 BigQuery 資料集的專案。
- 新增至少一個 Dataproc Metastore 服務做為來源,以及 BigQuery 資料集。
Dataplex Universal Catalog Lakes
- 授予含有
dataplex.lakes.get
權限的 IAM 角色。 - 至少新增一個 Dataproc Metastore 服務做為來源, 以及 Dataplex Universal Catalog Lake。
來源排序
同盟服務會依優先順序處理中繼資料要求。這個概念稱為來源排序。在執行階段,當同盟服務收到要求時,會檢查來源排序並完成下列其中一項動作:
- 如果要求包含資料庫名稱。要求會轉送至包含資料庫名稱的後端中繼存放區。如果有多個中繼存放區包含相同的資料庫名稱,系統會將要求傳送至排名最低的中繼存放區。
- 如果要求會建立或捨棄資料庫。要求會轉送至排名最低的 Metastore。
- 如果要求未包含資料庫名稱,且不會建立或捨棄資料庫,要求會轉送至排名最低的 Dataproc Metastore 執行個體。以下是未指定資料庫的 Hive Metastore 要求範例:
set_ugi
和create_database
。 - 如果沒有任何中繼存放區含有資料庫。OSS 引擎會傳回相當於「找不到」的錯誤。