限制和注意事项

将 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 键类型仅支持原始数据类型。您不能使用 ARRAYSTRUCTMAP 作为键类型。
  • 在预览期间,BigQuery 只能查询 Cloud Storage 中的数据。存在以下限制:
    • 表位置 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 外部表限制均适用。

分区限制

  • 不支持在分区级跟踪列级统计信息。
  • BatchCreateHivePartitions API 将调用限制为 900 个分区。

后续步骤