Java 如何在ApacheFlink流媒体中从关系数据库读取数据

Java 如何在ApacheFlink流媒体中从关系数据库读取数据,java,streaming,apache-flink,flink-streaming,Java,Streaming,Apache Flink,Flink Streaming,如何使用自定义数据源从关系数据库中读取数据。我对弗林克是个新手。我在添加新的自定义数据源时遇到问题。因此,请帮助我添加自定义数据源,并从源数据库中连续读取数据。正如承志所建议的,关系数据库的设计不是以流式方式处理的,最好使用Kafka、Kinesis或其他系统 但是,您可以编写一个自定义源函数,使用JDBC连接来获取数据。它必须不断地向数据库查询任何新数据。这里的问题是,您需要一种方法来确定哪些数据已经读取/处理,哪些没有。在我的脑海中,你可以使用一些东西,比如记住上次处理的主键是什么,然后在后

如何使用自定义数据源从关系数据库中读取数据。我对弗林克是个新手。我在添加新的自定义数据源时遇到问题。因此,请帮助我添加自定义数据源,并从源数据库中连续读取数据。

正如承志所建议的,关系数据库的设计不是以流式方式处理的,最好使用Kafka、Kinesis或其他系统

但是,您可以编写一个自定义源函数,使用JDBC连接来获取数据。它必须不断地向数据库查询任何新数据。这里的问题是,您需要一种方法来确定哪些数据已经读取/处理,哪些没有。在我的脑海中,你可以使用一些东西,比如记住上次处理的主键是什么,然后在后续查询中使用它,比如:

SELECT*FROM event\u id>last\u processed\u event\u id的事件

或者,您可以清除某些事务中的
事件
表,如:

从未处理的_事件中选择*;
从未处理的事件中删除,其中事件id为$PROCESSED\U event\U id

event\u id
可以是让您唯一标识记录的任何内容,可能是某个时间戳或一组字段


另一个要考虑的是,如果您想提供一个合理的<代码>至少一次< <代码> > <代码> > < /C> >保证,

直接从关系数据库中不做流式传输,则必须手动检查检查点(<代码>尽管您仍然可以像批处理一样执行此操作。您是否有可以从中提取数据的消息队列(如Kafka或Kinesis)?