JDBC接收器连接器是否基于最大时间戳插入/向上插入?

时间:2018-10-10 07:20:37

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

我对Kafka Connect很陌生

我要将来自多个源的记录插入到一​​个表中。 在某些情况下,某些记录可能会比其他记录先到达。 由于我无法控制哪个源将首先提取哪个记录,因此我想对记录的时间戳键进行检查。

我在架构中有一个名为“ LastModified_timestamp”的键,用于存储记录的最新状态的时间戳。

我想向我的JDBC接收器连接器添加一个检查,在此我可以根据比较LastModified_timestamp的值来向上插入一条记录

我想忽略时间戳较旧的记录,而只想向上插入/插入最新的记录。我找不到任何配置来实现这一目标

有什么方法可以实现这一目标? 在这种情况下,编写自定义查询会有所帮助吗?

1 个答案:

答案 0 :(得分:0)

JDBC Sink连接器不支持这种功能。您可以考虑以下两种选择:

  • 单消息转换(SMT)-它们在通过Kafka Connect时将逻辑应用于记录。 SMT非常适合诸如删除列,更改数据类型等之类的内容。 BUT 不适合更复杂的处理和逻辑,包括像您在这里那样需要跨越多个记录的逻辑

  • 首先处理源Kafka主题中的数据,以应用必要的逻辑。您可以使用Kafka Streams,KSQL和其他几个流处理框架(例如Spark,Flink等)来执行此操作。您需要某种有状态逻辑,如果记录比已处理的记录更旧,则可以解决。

您能否描述有关数据上游来源的更多信息?可能存在更好的方法来整理通过数据执行的顺序。

最后的想法是将所有记录放入目标数据库,然后在数据库查询中使用逻辑,从而消耗该记录来选择最新记录(基于LastModified_timestamp)给定密钥。

免责声明:我为开源KSQL项目背后的公司Confluent工作。