Paimon实战 -- paimon系统表与审计监控

简介

       paimon系统表按照元数据的分类,划分了如下10个系统表,通过系统表可以获取paimon表各维度的元数据和消费组信息。通过收集这些元信息,不仅可以排查问题使用,还可以构建统一的paimon元数据管理和消费组管理平台,比如paimon-web就是通过查询系统表来实现表的元数据管理和展示的,本文将详细介绍各系统表的含义和用途。

1.快照表

      通过快照表可以查询该表的快照历史信息,包括快照中发生的记录计数

SELECT * FROM my_catalog.my_db.`MyTable$snapshots`;


通过查询快照表,可以了解该表的提交和过期信息以及数据的时间旅行。

Snapshots系统表常用的列如下:

列名

数据类型

含义

snapshot_id

Long

快照文件的编号。

schema_id

Long

快照文件对应的表结构文件编号,表结构文件的内容可在Schemas系统表中查看。

commit_time

Timestamp

快照文件的创建时间。

total_record_count

Long

快照文件指向的数据文件中数据的总条数。

说明

数据文件需要在内存中归并之后才能产出真正的数据。因此total_record_count列的取值并不等于Paimon表逻辑上保存的数据条数。

delta_record_count

Long

与上一个快照文件相比,数据文件中增加的数据条数

changelog_record_count

Long

本次快照产出的变更数据条数。

2.表模式

可以通过schemas表查询该表的历史模式。

SELECT * FROM wstest2$schemas;


可以连接快照表和模式表以获得给定快照的字段。

SELECT s.snapshot_id, t.schema_id, t.fields  

 FROM wstest2$snapshots s JOIN

MyTable$schemas t  

  ON s.schema_id=t.schema_id where s.snapshot_id=1;

schemas系统表常用的列如下:

列名

数据类型

含义

schema_id

Long

表结构的编号。

fields

String

每一列的名称以及类型等。

partition_keys

String

分区列的名称。

primary_keys

String

主键的名称。

options

String

表参数的值。

comment

String

表的备注信息。

update_time

Timestamp

表结构修改的时间。

3.表选项

        可以查询表的选项信息,这些信息是通过选项表从DDL指定的。未显示的选项将是默认值。可以参考[Configuration]。

SELECT * FROM wstest2$options;

Options系统表常用的列如下:

列名

数据类型

含义

key

String

配置项的名称。

value

String

配置项的值。

4.审计日志表

      如果您在消费Paimon表的过程中,需要了解每一条数据的操作类型是插入还是删除,可以消费该Paimon表对应的Audit Log系统表。Audit log系统表产出的数据与对应的Paimon表一致,只是会在每条数据第1列的前面新增一个rowkind列,显式保存这条数据的类型,数据的操作类型共有+I(insert)、-U(update before)、+U(update after)、-D(delete)四种。而对于Audit Log系统表里的每条数据而言,它的数据操作类型都是+I(insert)

SELECT * FROM wstest2$audit_log;

5.表文件

可以查询指定快照表的文件。

-- 查询最新快照的文件SELECT * FROM wstest2$files;

-- 还可以查询指定快照的文

SELECT * FROM wstest2$files /*+ OPTIONS('scan.snapshot-id'='1') */;

Files系统表常用的列如下:

列名

数据类型

含义

partition

String

文件所在的分区,格式为[分区值 1, 分区值 2, ...]

bucket

Integer

文件所在的分桶,只对固定分桶的主键表有意义。

file_path

String

文件路径。

file_format

String

文件格式。

schema_id

Long

快照文件对应的表结构文件编号,表结构文件的内容可在Schemas系统表中查看。

level

Integer

文件所在的LSM层级,只对主键表有意义。

level = 0的文件就是未合并的小文件。通过查询某个分桶level = 0的文件数量,可以了解该分桶小文件合并的情况。

record_count

Long

文件内的数据条数。

file_size_in_bytes

Long

文件大小,以字节为单位。

6.表标签

      通过标签表可以查询该表的标签历史信息,包括标签基于哪些快照,以及快照的一些历史信息。还可以获得所有标签名称和时间旅行到特定的标签数据名称。

SELECT * FROM wstest2$tags;

列名

数据类型

含义

tag_name

String

Tag名称。

snapshot_id

Long

创建Tag时基于的快照的编号。

schema_id

Long

Tag对应的表结构编号,可在Schemas系统表中查询编号对应的具体表结构。

commit_time

Timestamp

创建Tag时基于的快照的创建时间。

record_count

Long

文件内的数据条数。

7.表消费者

      可以查询当前paimon表包含下一个快照的所有消费者。

SELECT * FROM wstest2$consumers;

8.表清单文件表

可以查询当前表的最新快照或指定快照中包含的所有清单文件。

-- 查询最新快照的清单信息 

 SELECT * FROM wstest2$manifests;

-- 也可以查询带有指定快照的清单

SELECT * FROM wstest2$manifests /*+ OPTIONS('scan.snapshot-id'='1') */;

9.分区表

可以查询表的分区文件。

SELECT * FROM demo_p1$partitions;

Partitions系统表常用的列如下。

列名

数据类型

含义

partition

String

分区值,格式为[分区值 1, 分区值 2, ...]

record_count

Long

分区内的数据条数。

说明

数据文件还需要在内存中归并之后才能产出真正的数据,因此record_count列的取值并不等于该分区逻辑上保存的数据条数。

file_size_in_bytes

Long

分区内的文件总大小,以字节为单位。

未被当前快照文件指向的历史数据文件不会被统计。

10.全局系统表

     全局系统表包含当前存在的所有表的统计信息;为了方便检索,创建了一个参考系统数据库sys,可以用sql在flink中显示所有全局系统表:

所有选项表,这个表类似于Options table,但是它显示所有的表选项都是all database。

SELECT * FROM sys.all_table_options;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿华田512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值