新记录状态提取
此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提供单个消息转换它跨越了复杂格式和简单格式之间的桥梁,即ExtractNewRecordStateSMT。
SMT提供三个主要功能。它
提取
后
字段,并将原始事件替换为此部分根据下游使用者的能力和需求,可选地过滤删除和墓碑记录
可选地将变更事件的元数据字段添加到传出的平铺记录中
可选地向标头添加元数据字段
SMT可以应用于源连接器(Debezium)或接收器连接器。开云体育官方注册网址我们通常建议在接收器端应用转换,因为这意味着存储在Apache Kafka中的消息将包含整个上下文。最终的决定取决于每个用户的用例。
配置
配置是源/接收器任务连接器的一部分,用一组属性表示:
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.ExtractNewRecordState 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字段)。有关可用的更多信息,请参阅每个连接器的文档.
如果字段名重复(例如:"ts_ms"存在两次),则应该指定结构体以获得正确的字段(例如。“source.ts_ms”)。字段将以“__”或“__
例如,配置
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.ExtractNewRecordState transforms.unwrap.add.fields = op、表source.ts_ms lsn
将增加
{“__op”:“c”,__table”:“MY_TABLE”、“__lsn”:“123456789”、“__source_ts_ms”:“123456789”,…}
到最后的扁平记录。
为删除
事件时,此选项仅在delete.handling.mode
选项设置为“重写”。
向报头添加元数据字段
SMT可以有选择地将原始更改事件的元数据字段添加到最终平铺记录的头部。此功能可用于添加操作或来自更改事件的表,或特定于连接器的字段(如Postgres LSN字段)。有关可用的更多信息,请参阅每个连接器的文档.
如果字段名重复(例如:"ts_ms"存在两次),则应该指定结构体以获得正确的字段(例如。“source.ts_ms”)。字段将以“__”或“__
例如,配置
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.ExtractNewRecordState transforms.unwrap.add.headers = op、表source.ts_ms lsn
将添加头文件人事处
,表格
,lsn
而且source_ts_ms
到外发记录。
确定原始操作[已弃用]
的operation.header
选项已弃用,已计划删除。请改用add.headers。如果add.headers和operation. headers同时存在。头,后者将被忽略。
当消息被平铺后,最终结果不会显示它是插入、更新还是首次读取(删除可以通过墓碑或重写检测,参见配置选项).
为了解决这个问题,Debezium提供了一个开云体育官方注册网址选项,通过添加到消息中的头来传播原始操作。要启用此功能,请使用该选项operation.header
必须设置为真正的
.
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.ExtractNewRecordState transforms.unwrap.operation.header = true
可能的值是人事处
原始更改事件的字段。
添加源元数据字段[弃用]
的add.source.fields
选项已弃用,已计划删除。请改用add.fields。如果同时指定了add.fields和add.source.fields,则后者将被忽略。
SMT可以选择从原始更改事件中添加元数据字段源
结构转换为最终的平化记录(前缀为“__”)。此功能可用于添加更改事件中的表等内容,或特定于连接器的字段(如Postgres LSN字段)。有关源结构中可用内容的更多信息,请参见每个连接器的文档.
例如,配置
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.ExtractNewRecordState transforms.unwrap.add.source.fields =表,lsn
将增加
{“__table”:“MY_TABLE”、“__lsn”:“123456789”,…}
到最后的扁平记录。
为删除
事件时,此选项仅在delete.handling.mode
选项设置为“重写”。
配置选项
财产 | 默认的 | 描述 |
---|---|---|
|
|
SMT从流中删除Debezium生成的墓碑。开云体育官方注册网址 |
|
|
SMT可以 |
|
指定要添加到扁平消息的元数据字段列表。如果字段名重复(例如:"ts_ms"存在两次),则应该指定结构体以获得正确的字段(例如。“source.ts_ms”)。字段将以“__”或“__ |
|
|
指定要添加到扁平消息头部的元数据字段列表。如果字段名重复(例如:"ts_ms"存在两次),则应该指定结构体以获得正确的字段(例如。“source.ts_ms”)。字段将以“__”或“__ |
|
|
|
此选项已弃用并计划删除。请改用add.headers。如果add.headers和operation. headers同时存在。头,后者将被忽略。 SMT添加事件操作(从 |
|
此选项已弃用并计划删除。请改用add.fields。如果同时指定了add.fields和add.source.fields,则后者将被忽略。 字段 |