將 Spark 和 Hive 與 Lakehouse 執行階段目錄整合,可省去維護自行代管 Hive Metastore (HMS) 的營運負擔,同時啟用統一的中繼資料共用功能,並在 BigQuery 中直接查詢資料表。
本文重點說明這項整合的功能限制和服務考量。在 Lakehouse 執行階段目錄中遷移或建構開放原始碼資料庫管道之前,請先詳閱下列限制,判斷這個預先發布版本是否符合您的技術需求。
如果您需要設定和查詢操作說明,而非限制,請參閱「搭配 Lakehouse 執行階段目錄使用 Spark 和 Hive」。
Lakehouse 執行階段目錄限制
本節列出搭配各種服務使用 Lakehouse 執行階段目錄的限制。
Metastore 限制
- Managed Service for Apache Spark 僅支援使用 Lakehouse Metastore 的 PySpark 工作。
- Dataproc API 不支援在
properties欄位中設定 Lakehouse Metastore 屬性。 - 您無法建立使用 Kerberos 的 Managed Service for Apache Spark 叢集,因為 Lakehouse 執行階段目錄不支援委派權杖或主鍵 API。
- 只要 Cloud Storage bucket 與 Hive 目錄位於相同區域,資料庫和資料表就能使用與 Hive 目錄不同的 Cloud Storage
location_uri。 - Hive 目錄不得包含 Iceberg 命名空間和資料表。如要建立及使用 Iceberg 命名空間和資料表,請改用 Lakehouse 執行階段目錄。
資料表限制
- 不支援重新命名表格。
- 不支援重新命名分區。
- 刪除表格或資料庫不會從 Cloud Storage 移除相關聯的檔案。
- 不支援不區分大小寫的搜尋。
- 不支援叢集和分組。
分割批量大小
Lakehouse 執行階段目錄支援儲存及擷取分區資訊,以用於分區修剪。這項功能已針對讀取作業進行最佳化,因此可透過分區修剪加快查詢效能。
為提升分割區的擷取效能,批次分割區大小上限為 900。
針對決定分割作業批次大小的 Hive 和 Spark 屬性,設定下列設定:
SET hive.msck.repair.batch.size = 900;SET spark.sql.addPartitionInBatch.size = 900;
BigQuery 限制
- 根據預設,BigQuery 不支援
ARRAY<ARRAY<>>或ARRAY<MAP<>>資料型別。必須將MAP的支援功能加入許可清單。 如果您的工作負載大量使用MAP,請傳送電子郵件至 biglake-help@google.com。 MAP鍵類型僅支援原始資料類型。您無法使用ARRAY、STRUCT或MAP做為鍵類型。- 在預覽期間,BigQuery 只能查詢 Cloud Storage 中的資料。適用下列限制:
- 表格位置 URI 不得包含萬用字元 (
*)。 - 資料表位置 URI 必須是目錄。
- 表格位置 URI 不得包含萬用字元 (
跨區域複製和災難復原限制
Lakehouse 執行階段目錄提供跨區域複製和災難復原功能,可提升目錄的可用性和彈性。
使用 Lakehouse 執行階段目錄搭配 Hive 目錄時,適用下列限制:
Hive 目錄無法提供完整的災難復原功能,例如使用者啟動的容錯移轉。
建立 Hive 目錄時,請務必將
primary_location設為與 Cloud Storage 值區的區域相符。然後,Lakehouse 執行階段目錄會根據值區的雙區域或多區域設定,自動將中繼資料複製到次要區域。這個次要中繼資料副本為唯讀,且無法升級為主要副本。資料備援取決於 bucket 的雙區域或多區域設定,與 Lakehouse 執行階段目錄中繼資料複製作業無關。
使用 Lakehouse 執行階段目錄做為 Hive Metastore 替代方案的注意事項
Lakehouse 執行階段目錄的預覽版支援部分 Hive Metastore 介面。這項設計優先考量與 Spark ExternalCatalog 的相容性,因此不需要與 Hive Metastore 完全相容。
資源對應
下表列出 Hive Metastore 資源與 Lakehouse 執行階段目錄資源的對應關係,以及這些資源所需的 Identity and Access Management (IAM) 權限。
| Hive Metastore 資源 | Lakehouse 執行階段目錄資源 | IAM 權限 |
|---|---|---|
| 目錄 | 目錄 | biglake.catalogs.* |
| 資料庫 | 資料庫 | biglake.namespaces.* |
| 資料表 | 資料表 | biglake.tables.* |
管理
Hive Metastore (HMS) 提供資料表、資料欄和分割區層級的管理機制。Lakehouse 執行階段目錄提供資料表和分割區層級的 IAM 權限,但不支援資料欄層級的管理機制。
儲存空間限制
- 適用所有 BigQuery 外部資料表限制。
分區限制
- 系統不支援在分區層級追蹤資料欄層級的統計資料。
BatchCreateHivePartitionsAPI 會將呼叫限制為 900 個分割區。