跳到主要内容
跳到主要内容

system.iceberg_metadata_log

system.iceberg_metadata_log 表记录了 ClickHouse 读取的 Iceberg 表的元数据访问和解析事件。它提供了每个处理的元数据文件或条目的详细信息,这对于调试、审计和理解 Iceberg 表结构演变非常有用。

目的

此表记录每个从 Iceberg 表读取的元数据文件和条目,包括根元数据文件、清单列表和清单条目。它帮助用户追踪 ClickHouse 如何解释 Iceberg 表的元数据,以及诊断与模式演变、文件解析或查询规划相关的问题。

备注

此表主要用于调试目的。

备注

名称类型描述
event_dateDate日志条目的日期。
event_timeDateTime事件的时间戳。
query_idString触发元数据读取的查询 ID。
content_typeEnum8元数据内容的类型(见下文)。
table_pathStringIceberg 表的路径。
file_pathString根元数据 JSON 文件、Avro 清单列表或清单文件的路径。
contentStringJSON 格式的内容(来自 .json 的原始元数据、Avro 元数据或 Avro 条目)。
row_in_fileNullable(UInt64)文件中的行号(如适用)。适用于 ManifestListEntryManifestFileEntry 内容类型。

content_type

  • None: 无内容。
  • Metadata: 根元数据文件。
  • ManifestListMetadata: 清单列表元数据。
  • ManifestListEntry: 清单列表中的条目。
  • ManifestFileMetadata: 清单文件元数据。
  • ManifestFileEntry: 清单文件中的条目。
在 ClickHouse Cloud 中查询

此系统表中的数据在 ClickHouse Cloud 中的每个节点上本地保存。因此,要获得所有数据的完整视图,需要使用 clusterAllReplicas 函数。有关进一步的详细信息,请参见 这里

控制日志详细性

您可以使用 iceberg_metadata_log_level 设置来控制记录哪些元数据事件。

要记录当前查询中使用的所有元数据:

SELECT * FROM my_iceberg_table SETTINGS iceberg_metadata_log_level = 'manifest_file_entry';

SYSTEM FLUSH LOGS iceberg_metadata_log;

SELECT content_type, file_path, row_in_file
FROM system.iceberg_metadata_log
WHERE query_id = '{previous_query_id}';

要仅记录当前查询中使用的根元数据 JSON 文件:

SELECT * FROM my_iceberg_table SETTINGS iceberg_metadata_log_level = 'metadata';

SYSTEM FLUSH LOGS iceberg_metadata_log;

SELECT content_type, file_path, row_in_file
FROM system.iceberg_metadata_log
WHERE query_id = '{previous_query_id}';

有关更多信息,请参见 iceberg_metadata_log_level 设置的描述。

需要注意

  • 仅在您需要详细调查 Iceberg 表时,才在查询级别使用 iceberg_metadata_log_level。否则,您可能会用过多的元数据填充日志表,并体验到性能下降。
  • 该表可能包含重复条目,因为它主要用于调试,无法保证每个实体的唯一性。
  • 如果您使用的 content_typeManifestListMetadata 更详细,则会禁用清单列表的 Iceberg 元数据缓存。
  • 同样,如果您使用的 content_typeManifestFileMetadata 更详细,则会禁用清单文件的 Iceberg 元数据缓存。

参见