将 Spark 和 Hive 与 Lakehouse 运行时目录集成,可消除维护自托管 Hive Metastore (HMS) 的运营开销,同时支持在 BigQuery 中进行统一的元数据共享和直接表查询。
本文档重点介绍了此集成在功能方面的限制和服务方面的注意事项。在 Lakehouse 运行时目录中迁移或构建开源数据库流水线之前,请查看以下限制,以确定此预览版是否符合您的技术要求。
如果您要查找配置和查询说明,而不是限制,请参阅将 Spark 和 Hive 与 Lakehouse 运行时目录搭配使用。
Lakehouse 运行时目录限制
本部分列出了将 Lakehouse 运行时目录与各种服务搭配使用的限制。
元存储区限制
- 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 Catalog 不提供完整的灾难恢复功能,例如用户发起的故障切换。
创建 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 个分区。