在 ClickHouse Cloud 中查询此系统表中的数据分别保存在 ClickHouse Cloud 各节点的本地。因此,如需查看所有数据的完整情况,需要使用
clusterAllReplicas 函数。更多详情请参见此处。说明
system.iceberg_metadata_log 表会记录 ClickHouse 读取 Iceberg 表时的元数据访问和解析事件。它提供有关每个已处理元数据文件或条目的详细信息,有助于调试、审计以及理解 Iceberg 表结构的演进过程。
该表会记录从 Iceberg 表读取的每个元数据文件和条目,包括根元数据文件、manifest 列表和 manifest 条目。它可帮助用户追踪 ClickHouse 如何解析 Iceberg 表元数据,并诊断与 schema 演进、文件定位或查询计划相关的问题。
该表主要用于调试。
控制日志详细级别
iceberg_metadata_log_level 设置,控制哪些元数据事件会被记入日志。
要记录当前查询使用的全部元数据:
iceberg_metadata_log_level 设置的说明。
使用须知
- 仅当你需要对 Iceberg 表进行细致排查时,才在查询级别使用
iceberg_metadata_log_level。否则,日志表中可能会写入过多元数据,并导致性能下降。 - 该表包含重复条目,因为它主要用于调试,且不保证每个实体的唯一性。内容和裁剪状态分别存储在不同的行中,因为它们是在程序运行的不同时间点采集的。内容会在读取元数据时采集,裁剪状态会在检查元数据是否需要裁剪时采集。切勿依赖该表本身进行去重。
- 如果你使用的
content_type比ManifestListMetadata更详细,则会为 manifest 列表禁用 Iceberg metadata cache。 - 同样,如果你使用的
content_type比ManifestFileMetadata更详细,则会为 manifest 文件禁用 Iceberg metadata cache。 - 如果 SELECT 查询被取消或执行失败,日志表中仍可能包含失败前已处理元数据的条目,但不会包含尚未处理的元数据实体信息。
列
hostname(LowCardinality(String)) — 执行查询的服务器主机名。event_date(Date) — 记录日期。event_time(DateTime) — 事件时间。query_id(String) — 查询 ID。content_type(Enum8(‘None’ = 0, ‘Metadata’ = 1, ‘ManifestListMetadata’ = 2, ‘ManifestListEntry’ = 3, ‘ManifestFileMetadata’ = 4, ‘ManifestFileEntry’ = 5)) — 内容类型。table_path(String) — 表路径。file_path(String) — 文件路径。content(String) — JSON 格式的内容 (JSON 文件内容、Avro 元数据或 Avro 条目) 。row_in_file(Nullable(UInt64)) — 文件中的行号。pruning_status(Nullable(Enum8(‘NotPruned’ = 0, ‘PartitionPruned’ = 1, ‘MinMaxIndexPruned’ = 2))) — 该文件的分区裁剪或 min-max 索引裁剪状态。
content_type 值
None:无内容。Metadata:根元数据文件。ManifestListMetadata:manifest 列表元数据。ManifestListEntry:manifest 列表中的条目。ManifestFileMetadata:manifest 文件元数据。ManifestFileEntry:manifest 文件中的条目。