Apache kafka 如何使用Kafka JDBC连接器跟踪具有特定列值的行(按id)?

Apache kafka 如何使用Kafka JDBC连接器跟踪具有特定列值的行(按id)?,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,我有一个包含大量记录的表。有一列定义了记录的类型。我想收集该列中具有特定值的记录。种类: Select * FROM myVeryOwnTable WHERE type = "VERY_IMPORTANT_TYPE" 我注意到,当我选择增量+时间戳模式时,我不能在自定义查询中使用WHERE子句,否则我需要注意自己是否进行过滤。 我想实现的背景是,我使用Logstash将某种类型的数据从MySQL传输到ES。通过使用可以包含where子句的查询,很容易实现这一点。但是,使用Kafka,在DB中

我有一个包含大量记录的表。有一列定义了记录的类型。我想收集该列中具有特定值的记录。种类:

Select * FROM myVeryOwnTable WHERE type = "VERY_IMPORTANT_TYPE" 
我注意到,当我选择增量+时间戳模式时,我不能在自定义查询中使用WHERE子句,否则我需要注意自己是否进行过滤。 我想实现的背景是,我使用Logstash将某种类型的数据从MySQL传输到ES。通过使用可以包含where子句的查询,很容易实现这一点。但是,使用Kafka,在DB中插入新行后,我几乎可以立即更快地传输数据

谢谢你的任何提示或建议

多亏了@wardziniak,我才能够设置它。


不过,我希望有一个主题测试mysql jdbc myVeryOwnTable,所以我已经向该表注册了我的消费者。但是,将跳过使用上面显示的查询表名,因此我的主题的名称与上面定义的前缀完全相同。所以我刚刚更新了我的属性主题。prefix=testmysql-jdbc-myVeryOwnTable,它似乎工作得很好

您可以在Jdbc源连接器查询属性中使用子查询

示例JDBC源连接器配置:

{ ... 查询:select*from select*from myVeryOwnTable p,其中type='VERY\u IMPORTANT\u type'p, incrementing.column.name:id, ... }
那很聪明。我试试看!不起作用的感谢信。正如我看到的,它运行在id`>?按id订购ASC`但应:其中p.id>?ORDER BY p.id ASC显然只是猜测,但我认为这就是问题所在。@user007,你确定在DB轮询期间没有过滤记录不起作用吗?是否有任何异常或错误。我已经做了测试并正确地过滤了它。我可以在日志准备的SQL查询中看到类似的内容:select*from select*from myVeryOwnTable p where type='VERY\u IMPORTANT\u type'p where id>?我可以看到:[2019-04-07 21:03:31648]信息集群ID:w15JXkZYRu68ZPyJ4JFplw org.apache.kafka.clients.Metadata:365[2019-04-07 21:03:31660]信息开始使用SQL查询:select*FROM select*FROM mydb.mytable ev WHERE ev.type=10 ev WHERE ID>?ORDER BY id ASC io.confluent.connect.jdbc.source.TimestampIncrementableQuerier:140[2019-04-07 21:04:31549]INFO WorkerSourceTask{id=test-source-mysql-jdbc-autoincrement-0}提交偏移量org.apache.kafka.connect.runtime.WorkerSourceTask:398,但这不会向我的使用者返回任何记录。@user007,确保表中有增量值较大的新记录。JDBC连接器保留有关上次递增值的信息,因此要进行重置,您必须删除独立模式remove/tmp/connect.offset的信息,或者使用新名称创建连接器。
query=select * from (select * from myVeryOwnTable p where type = 'VERY_IMPORTANT_TYPE') p
topic.prefix=test-mysql-jdbc-
incrementing.column.name=id