新记录状态提取
此SMT仅支持SQL数据库连接器,不适用于MongoDB连接器。开云体育电动老虎机看到在这里对于MongoDB等效于此SMT。 |
开云体育官方注册网址Debezium以复杂消息结构的形式生成数据更改。该信息由三部分组成:
操作和元数据
更改前的行数据
更改后的行数据
的一般消息结构更新
变化是这样的:
{"op": "u", "source":{…}, " ts_ms " : "...", " 前”:{“field1”:“oldvalue1”、“field2”:“oldvalue2”},“后”:{“field1”:“newvalue1”、“field2”:“newvalue2}}
中提供了有关消息结构的更多详细信息每个连接器的文档。
这种格式允许用户获得关于系统中发生的更改的大部分信息。使用复杂格式的缺点是,其他连接器或Kafka生态系统的其他部分通常希望数据以简单的消息格式出现,通常可以这样描述:
{"field1": "newvalue1", "field2": "newvalue2"}
开云体育官方注册网址Debezium提供单个消息转换它跨越了复杂格式和简单格式之间的桥梁,即UnwrapFromEnvelopeSMT。
SMT提供三个主要功能。它
提取
后
字段,并将原始事件替换为此部分根据下游使用者的能力和需求,可选地过滤删除和墓碑记录
可选地从更改事件中添加元数据字段
源
字段,前缀为“__”
SMT可以应用于源连接器(Debezium)或接收器连接器。开云体育官方注册网址我们通常建议在接收器端应用转换,因为这意味着存储在Apache Kafka中的消息将包含整个上下文。最终的决定取决于每个用户的用例。
配置
配置是源/接收器任务连接器的一部分,用一组属性表示:
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.UnwrapFromEnvelope transforms.unwrap.drop。Tombstones =false transforms.unwrap.delete. handle .mode=重写transforms.unwrap.add.source.fields=表,lsn
记录过滤用于删除记录
SMT为事件提供了一种特殊的处理删除
操作。当一个删除
在数据源上执行,然后Debezium生成两个事件:开云体育官方注册网址
有记录的
d
仅包含旧行数据的操作的记录(可选)
零
值和相同的键(“tombstone”消息)。该记录作为Apache Kafka的标记,所有带有此键的消息都可以在此期间从主题中删除日志压实。
在处理这两条记录之后,SMT可以传递d
按原样记录,将其转换为另一个墓碑记录或删除它。原始的墓碑消息可以原样传递,也可以删除。
SMT默认过滤掉这两个删除记录,因为目前广泛使用的接收器连接器不支持处理墓碑消息。 |
添加源元数据字段
SMT可以选择从原始更改事件中添加元数据字段源
结构转换为最终的平化记录(前缀为“__”)。此功能可用于添加更改事件中的表或连接器指定字段(如Postgres LSN字段)等内容。有关源结构中可用内容的更多信息,请参见每个连接器的文档
例如,配置
transforms.unwrap.add.source.fields =表,lsn
将增加
{“__table”:“MY_TABLE”、“__lsn”:“123456789”,…}
到最后的扁平记录。
为删除
事件时,此选项仅在delete.handling.mode
选项设置为“重写”。