system.iceberg_metadata_log
system.iceberg_metadata_log
表记录了 ClickHouse 读取的 Iceberg 表的元数据访问和解析事件。它提供了每个处理的元数据文件或条目的详细信息,这对于调试、审计和理解 Iceberg 表结构演变非常有用。
目的
此表记录每个从 Iceberg 表读取的元数据文件和条目,包括根元数据文件、清单列表和清单条目。它帮助用户追踪 ClickHouse 如何解释 Iceberg 表的元数据,以及诊断与模式演变、文件解析或查询规划相关的问题。
备注
此表主要用于调试目的。
备注
列
名称 | 类型 | 描述 |
---|---|---|
event_date | Date | 日志条目的日期。 |
event_time | DateTime | 事件的时间戳。 |
query_id | String | 触发元数据读取的查询 ID。 |
content_type | Enum8 | 元数据内容的类型(见下文)。 |
table_path | String | Iceberg 表的路径。 |
file_path | String | 根元数据 JSON 文件、Avro 清单列表或清单文件的路径。 |
content | String | JSON 格式的内容(来自 .json 的原始元数据、Avro 元数据或 Avro 条目)。 |
row_in_file | Nullable(UInt64) | 文件中的行号(如适用)。适用于 ManifestListEntry 和 ManifestFileEntry 内容类型。 |
content_type
值
None
: 无内容。Metadata
: 根元数据文件。ManifestListMetadata
: 清单列表元数据。ManifestListEntry
: 清单列表中的条目。ManifestFileMetadata
: 清单文件元数据。ManifestFileEntry
: 清单文件中的条目。
在 ClickHouse Cloud 中查询
此系统表中的数据在 ClickHouse Cloud 中的每个节点上本地保存。因此,要获得所有数据的完整视图,需要使用 clusterAllReplicas
函数。有关进一步的详细信息,请参见 这里。
控制日志详细性
您可以使用 iceberg_metadata_log_level
设置来控制记录哪些元数据事件。
要记录当前查询中使用的所有元数据:
要仅记录当前查询中使用的根元数据 JSON 文件:
有关更多信息,请参见 iceberg_metadata_log_level
设置的描述。
需要注意
- 仅在您需要详细调查 Iceberg 表时,才在查询级别使用
iceberg_metadata_log_level
。否则,您可能会用过多的元数据填充日志表,并体验到性能下降。 - 该表可能包含重复条目,因为它主要用于调试,无法保证每个实体的唯一性。
- 如果您使用的
content_type
比ManifestListMetadata
更详细,则会禁用清单列表的 Iceberg 元数据缓存。 - 同样,如果您使用的
content_type
比ManifestFileMetadata
更详细,则会禁用清单文件的 Iceberg 元数据缓存。