Kafka Connect JDBC Sink连接器:如何删除没有NULL值的记录?

时间:2020-03-06 18:38:24

标签: jdbc apache-kafka apache-kafka-connect confluent-platform

是否存在(推荐)从记录值不为NULL的Kafka Connect JDBC Sink连接器中删除记录的方法?

例如,如果我的JSON配置包含以下内容:

...
"delete.enabled": "true",
"pk.mode": "record_key",
...

我的记录的值非空,是否有办法在数据库中删除该记录?

我问是因为记录的值具有标记是否应删除的字段,即“ Operation”之类的列,其中“ Operation” ==“ D”应是通过JDBC在数据库中删除。

如果有一种标准/推荐的方法可以做到这一点,我很想听听。我唯一的另一个想法是进行一个自定义转换,以检查“ Operation”列中的值“ D”,如果匹配,则将完整的PK但值设置为NULL的记录传递回记录,即逻辑删除记录连接器应该将其拾取,作为删除操作。有可能吗?

感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

目前尚未有任何回应,但我得到了一些有点棘手的解决方案:

  • 创建了一个自定义Transform,如果满足特定条件(在我的情况下,这是检查记录值中的字段),则将记录的值设置为NULL(创建逻辑删除记录)
  • 如果不满足条件,转换将返回原始记录
  • 包装成JAR
  • 在“ plugin.path”上提供了JAR
  • 确保“ delete.enabled”:“ true”和“ pk.mode”:“ record_key”,以便删除逻辑删除记录
  • 在发送POST请求以实例化连接器时,请将转换和任何相关配置包括在POST正文中

希望这会有所帮助