您可以诊断和解决无边界 Lakehouse 及其关联资源中的错误,包括元数据表查询、metadata.json 文件大小限制和多区域目录配置方面的问题。解决这些问题有助于您在湖仓一体工作负载中恢复表操作和查询执行。
无法查询元数据表
当您使用由五个部分组成的名称标识符查询 BigQuery 中由 Lakehouse 运行时目录支持的 Apache Iceberg 表的元数据表(例如 .snapshots 或 .files)时,会出现此问题。
如需解决此问题,请使用 Apache Spark 查询这些表。
metadata.json 文件大小限制
Apache Iceberg metadata.json 文件大小上限为 1 MB。此限制适用于跟踪表快照、架构和分区规范的元数据文件。如果元数据文件超出此大小,您在通过 Apache Iceberg REST 目录端点执行表操作时可能会遇到错误。
如需解决此问题,请与您的 Google 客户支持团队联系,申请提高限额。
查询多区域目录时出现 NOT_FOUND 错误
如果您在 Lakehouse 运行时目录中使用多区域 Cloud Storage 存储桶创建目录,但未指定主要位置,然后尝试通过指定 BigQuery 虚拟区域(例如 US 或 EU)来查询该目录,就会出现此问题。
使用多区域存储桶创建目录时,其元数据会存储在多区域地理范围内的特定区域位置,而不是存储在相应的 BigQuery 虚拟区域中。如果您强制查询在不存在元数据的虚拟区域中运行,则查询会失败并显示 NOT_FOUND 错误。
如需解决此问题,请在创建目录时指定主要位置(例如 US 或 EU)。如需了解详情,请参阅为美国和欧盟多区域指定主要区域。
存储优化作业不会显示在 INFORMATION_SCHEMA.JOBS 中
当您在 Apache Iceberg 表上启用表管理并执行数据变更(例如插入或 DML 语句)时,如果 INFORMATION_SCHEMA.JOBS 视图中未显示任何存储优化作业(例如 CALL BQ.OPTIMIZE_STORAGE),就会出现此问题。如需详细了解如何查询这些作业,请参阅获取 Iceberg 存储优化作业。
跳过存储优化时,会出现这种情况。表管理功能会在数据发生变化后评估表布局,并且仅在数据文件需要压缩或重构时运行优化作业。由于后台表管理作业在您的项目中运行并消耗计算资源,因此当表布局已优化时,BigQuery 不会重写数据。在以下情况下,系统会跳过优化:
- 文件已达到最佳大小:现有数据文件已接近或超过目标文件大小(平均解压缩大小至少为 256 MB 的 50%)。
- 未达到阈值:表尚未累积足够的小文件,或者未达到压缩所需的大小阈值(例如表总大小超过 1 GB)。
跳过存储优化后,系统不会执行任何后台作业,也不会在 INFORMATION_SCHEMA.JOBS 中记录任何条目。
如果查询性能满足您的要求,并且文件大小已经合适,则无需执行任何操作。当未来的写入操作导致足够的文件碎片时,存储优化会自动运行。
如需在测试环境中观察存储优化作业,请模拟文件碎片化,方法是随着时间的推移,将多个小批量数据插入到大小超过 1 GB 的表中。