通过 Apache Hive 目录端点将 Apache Spark 和 Apache Hive 与 Lakehouse 运行时目录集成,您可以直接在 BigQuery 中共享统一的元数据和查询表,而无需维护自托管的 Hive Metastore (HMS)。
在 Lakehouse 运行时目录中迁移或构建开源数据库流水线之前,请先查看本文档中的功能限制和服务注意事项,以确定集成是否符合您的技术要求。如需查看设置和查询说明,请参阅使用 Lakehouse 运行时目录设置 Spark 和 Hive。
Lakehouse 运行时目录限制
本部分列出了将 Lakehouse 运行时目录与各种服务搭配使用时的限制。
Metastore 限制
- Managed Service for Apache Spark 仅支持使用 Lakehouse 运行时目录的 PySpark 作业。
- Dataproc API 不支持在
properties字段中设置 Lakehouse 运行时目录属性。 - 您无法创建使用 Kerberos 的 Managed Service for Apache Spark 集群,因为 Lakehouse 运行时目录不支持委托令牌或主键 API。
- 数据库和表可以使用与 Hive 目录不同的 Cloud Storage
location_uri,只要 Cloud Storage 存储桶与 Hive 目录位于同一区域即可。 - Hive 目录不能包含 Iceberg 命名空间和表。如需创建和使用 Iceberg 命名空间和表,请改用 Lakehouse 运行时目录。
- Hive 数据库和 Hive 目录不支持级联删除。
- 不支持 Trino。
表限制
- 不支持重命名表。
- 不支持重命名分区。
- 删除表或数据库不会从 Cloud Storage 中移除关联的文件。
- 不支持不区分大小写的搜索。
- 不支持聚簇和分桶。
- 仅支持虚拟视图。
- Delta Lake 表通过 Apache Spark(读写)和 BigQuery(只读)提供支持。Hive 客户端(例如 Hive CLI)不支持 Delta Lake 表。所有 BigQuery Delta Lake 外部表限制和 BigLake 表限制均适用。如需了解详情和具体限制,请参阅使用 Delta 表设置 Spark。
分区批次大小
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 目录时,您必须将其
primary_location设置为与 Cloud Storage 存储桶的区域一致。然后,Lakehouse 运行时目录会根据存储桶的双区域或多区域配置,自动将元数据复制到次要区域。此辅助元数据副本为只读,直到您使用故障切换操作将其提升为主副本。 - 在故障切换期间,
replication_time时间戳仅跟踪目录元数据复制,而不跟踪底层 Cloud Storage 数据文件是否已完成复制到次要区域。数据冗余依赖于存储桶的双区域或多区域设置,这与 Lakehouse 运行时目录元数据复制是分开的。
注意事项
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 外部表限制均适用。
分区限制
- 不支持在分区级层跟踪列级统计信息。
BatchCreatePartitions、BatchDeletePartitions和BatchUpdatePartitionsAPI 将调用限制为每批次 900 个分区。
后续步骤
- 将 Spark 和 Hive 与 Lakehouse 运行时目录搭配使用。