将 Spark 和 Hive 与 Lakehouse 运行时目录集成,可消除维护自行托管的 Hive Metastore (HMS) 的运营开销,同时支持在 BigQuery 中统一元数据共享和直接表查询。
本文档重点介绍了此集成的功能限制和服务注意事项。在 Lakehouse 运行时目录中迁移或构建开源数据库流水线之前,请查看这些限制,以确定此预览版是否符合您的技术要求。
如果您需要的是配置和查询说明而不是限制, 请参阅将 Spark 和 Hive 与 Lakehouse 运行时目录搭配使用。
Lakehouse 运行时目录限制
本部分列出了将 Lakehouse 运行时目录与各种服务搭配使用时的限制。
Metastore 限制
- Managed Service for Apache Spark 仅支持使用 Lakehouse Metastore 的 PySpark 作业。
- Dataproc API 不支持在
properties字段中设置 Lakehouse Metastore 属性。 - 您无法创建使用 Kerberos 的 Managed Service for Apache Spark 集群,因为 Lakehouse 运行时目录不支持委托令牌或主键 API。
- 数据库和表可以使用与 Hive 目录不同的 Cloud Storage
location_uri,前提是 Cloud Storage 存储桶与 Hive 目录位于同一区域。 - 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 运行时目录会根据存储桶的双区域或多区域配置,自动将元数据复制到辅助区域。此辅助元数据副本是只读的,您无法将其提升为主副本。数据冗余依赖于存储桶的双区域或多区域设置,这与 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 个分区。