如何在apache flink流中读取关系数据库中的数据

时间:2018-01-09 06:23:36

标签: java streaming apache-flink flink-streaming

我们如何使用自定义数据源从关系数据库中读取数据。我是flinking流媒体的新手。我在添加新的自定义数据源时遇到问题。因此,请帮助我从源数据库中连续添加自定义数据源读取数据

1 个答案:

答案 0 :(得分:2)

正如Chengzhi所建议的那样,关系数据库不是设计为以流方式处理的,而且最好使用Kafka,Kinesis或其他系统。

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

ln -sf libnvidia-ptxjitcompiler.so.384.111 libnvidia-ptxjitcompiler.so.1 ln -sf libnvidia-wfb.so.384.111 libnvidia-wfb.so.1

或者,您可以清除某些事务中的SELECT * FROM events WHERE event_id > $last_processed_event_id;表,如:

events

SELECT * FROM unprocessed_events; DELETE FROM unprocessed_events WHERE event_id IN $PROCESSED_EVENT_IDS;可以是任何可以让您唯一标识记录的东西,可能是某个时间戳或一组字段。

另一件需要考虑的事情是,如果您想提供任何合理的event_idlast_processed_even_id保证,您必须手动处理(at-least-once偏移量)检查点。