我们如何使用自定义数据源从关系数据库中读取数据。我是flinking流媒体的新手。我在添加新的自定义数据源时遇到问题。因此,请帮助我从源数据库中连续添加自定义数据源和读取数据。
答案 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_id
或last_processed_even_id
保证,您必须手动处理(at-least-once
偏移量)检查点。