定期刷新apache flink中的静态数据?

camsedfj  于 2021-06-24  发布在  Flink
关注(0)|答案(2)|浏览(448)

我有一个应用程序,它从一个流接收大部分输入,但它的一些数据来自rdbms和一系列静态文件。
流将不断地发出事件,因此flink作业将永远不会结束,但是如何定期刷新rdbms数据和静态文件以捕获对这些源的任何更新?
我正在使用 JDBCInputFormat 从数据库中读取数据。
下面是我试图做的一个粗略的示意图:

0tdrvxhp

0tdrvxhp1#

对于可能更改的两个源(rdbms和文件)中的每一个,创建一个flink源,该源使用广播流将更新发送给正在处理来自kafka的数据的flink操作符。广播流将每个对象发送到接收操作符的每个任务/示例。

fkvaft9z

fkvaft9z2#

对于每个源、文件和rdbms,您可以定期(例如每6小时)在hdfs或存储中创建一个快照,并计算到快照之间的差异。结果将推送到kafka。当您不能修改数据库和文件结构以及一个额外的信息(例如在rdbms中-一个名为last\u update的列)时,这个解决方案就可以工作了。
另一种解决方案是添加一个名为last\u update的列,用于过滤在到查询之间更改的数据,并将数据推送到kafka。

相关问题