在kafka connector的使用中,可能因为各种原因(业务原因、connector需要key或者schema等)需要用到transfomation,处理消息的内容。下面列举了kafka connector 自带的transfomation的功能,帮助大家了解一下,当然有能力也可以自己开发transfomation组件。
功能 | 转换器名称 | 转换器类型 | 独有配置 | 对应功能(修改kafka Message) |
插入字段 | InsertField | org.apache.kafka.connect.transforms.${name}.(key/value) | offset.field | 添加offset记录 |
partition.field | 添加对应kafka分区记录 | |||
timestamp.field | 添加对应时间戳字段 | |||
topic.field | 添加对应kafka分区字段记录 | |||
static.field | 添加写死的记录名 | |||
static.field | 添加写死的记录值 | |||
替换字段 | ReplaceField | blacklist | 要丢弃的字段名 | |
whitelist | 要改名的字段列表 | |||
renames | 改名对应映射:old_fied1:new_filed1,old_fied2:new_filed2 | |||
遮挡字段 | MaskField | fields | 要加密(丢弃)的字段列表 | |
包装字段(整个消息包装成一个字段) | HoistField | field | 被包装后的字段名 | |
拆包字段(只能取一个字段) | ExtractField | field | 要取出来的字段 | |
设置消息Schema | SetSchemaMetadata | schema.name | 设置schema名称 | |
schema.version | 设置schema版本 | |||
转换timestamp字段类型 | TimestampConverter | target.type | 目标timestamp类型(unix/Date/Time/Timestamp) | |
field | timestamp字段名 | |||
format | yyyyMMdd | |||
给kafka消息添加key | ValueToKey | fields | 将值的哪个字段作为kafka消息的key | |
用时间戳来改变目的表或文件名 | TimestampRouter | timestamp.format | 改变消息的timestamp格式:yyyyMMdd | |
topic.format | ${topic}${timestamp}调用topic名和时间戳,生成字段里的新topic名 | |||
用正则表达式改变目的表或文件名 | RegexRouter | regex | 该topic名要匹配什么正则:DC1-TEST-(.*) | |
replacement | 要代替的心topic名:$1 | |||
展开嵌套的数据接口 | Flatten | delimiter | 将嵌套的结构展开,指定的分隔符 | |
改变字段的数据类型 | Cast | spec | 转换字段类型foo:int8,bar:float32 |