我对Kafka Connect很陌生
我要将来自多个源的记录插入到一个表中。 在某些情况下,某些记录可能会比其他记录先到达。 由于我无法控制哪个源将首先提取哪个记录,因此我想对记录的时间戳键进行检查。
我在架构中有一个名为“ LastModified_timestamp”的键,用于存储记录的最新状态的时间戳。
我想向我的JDBC接收器连接器添加一个检查,在此我可以根据比较LastModified_timestamp的值来向上插入一条记录
我想忽略时间戳较旧的记录,而只想向上插入/插入最新的记录。我找不到任何配置来实现这一目标
有什么方法可以实现这一目标? 在这种情况下,编写自定义查询会有所帮助吗?
答案 0 :(得分:0)
JDBC Sink连接器不支持这种功能。您可以考虑以下两种选择:
单消息转换(SMT)-它们在通过Kafka Connect时将逻辑应用于记录。 SMT非常适合诸如删除列,更改数据类型等之类的内容。 BUT 不适合更复杂的处理和逻辑,包括像您在这里那样需要跨越多个记录的逻辑
首先处理源Kafka主题中的数据,以应用必要的逻辑。您可以使用Kafka Streams,KSQL和其他几个流处理框架(例如Spark,Flink等)来执行此操作。您需要某种有状态逻辑,如果记录比已处理的记录更旧,则可以解决。
您能否描述有关数据上游来源的更多信息?可能存在更好的方法来整理通过数据执行的顺序。
最后的想法是将所有记录放入目标数据库,然后在数据库查询中使用逻辑,从而消耗该记录来选择最新记录(基于LastModified_timestamp
)给定密钥。
免责声明:我为开源KSQL项目背后的公司Confluent工作。