由于ksqldb中的Kstream支持原始数据类型(String
或BigInt
),有没有办法处理来自Kstream的逻辑删除记录?
在ValueToKey
SMT中,可以转换为PK
的值必须是MySQL表/白名单列的一部分,并且不能被列入黑名单。有没有一种方法可以从一个字段中获取值并将其映射到不同的键名?
直到在Confluent中不释放KEY支持之前,对于墓碑记录都是有帮助的。
示例- 在KSQL流中,
KEY - {PK1=ABC, PK2=1} (STRING format)
VALUE - {PK1=null, PK2=null, COL3=null, COL4=null} (AVRO format)
由于KEY
格式为STRING
,因此接收器连接器密钥格式必须为STRING
,而不是JSON / AVRO。在这种情况下,有什么方法可以处理墓碑记录?
我为PK字段创建了两个后缀为_KEY
的列,以便可以将这些_KEY
列的值映射到实际PK列,并将_KEY
后缀列列入黑名单。
KEY - {PK1=ABC, PK2=1} (STRING format)
VALUE - {PK1_KEY=ABC, PK2_KEY=1, PK1=null, PK2=null, COL3=null, COL4=null} (AVRO format)
在接收器连接器中,我使用了ValueToKey
SMT,以便接收器连接器将根据_KEY
后缀列中的值从MySQL删除记录,并采用原始列名,例如-
delete from TEST where PK1='ABC' and PK2=1;
"delete.enabled": "true",
"pk.mode": "record_key",
"pk.fields": "PK1,PK2",
"transforms": "ValueToKey,ReplaceField",
"transforms.ValueToKey.type":"org.apache.kafka.connect.transforms.ValueToKey",
"transforms.ValueToKey.fields": "PK1_KEY,PK2_KEY",
"transforms.ReplaceField.type": "org.apache.kafka.connect.transforms.ReplaceField$Value",
"transforms.ReplaceField.whitelist": "PK1,PK2,COL3,COL4"
有没有办法做到这一点?当我尝试使用上述接收器配置时,接收器连接器出现错误。