在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 |