引导flink状态

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

我正在研究一个简单的聚合,它对给定资源上发生的事件的总数求和(请参阅:在flink中计算总数并定期发射)。在一些人的帮助下,我得到了这个工作,但现在触及另一个问题。
我试图计算资源生命周期的总数,但我正在从保留期为24小时的kinesis流中读取事件。因为这意味着我无法访问在此之前发生的事件,所以我需要从一个每天计算一次总数的遗留(批处理)系统中引导我的状态。
从本质上说,我希望以某种方式从遗留系统(加载昨天的统计数据)引导状态,然后在此基础上加入来自kinesis流的今天的数据,并避免过程中的重复。理想情况下,这是一个一次性的过程,应用程序应该从kinesis开始运行。
如果我遗漏了什么,我很乐意提供更多细节。
谢谢

5cnsuln7

5cnsuln71#

我也面临着类似的问题。我目前的解决方案是有两个源—一个用于历史数据,另一个用于当前数据。然后我将把源代码与coflatmap函数结合起来。此函数必须跟踪传入的记录,缓冲它们并以正确的顺序输出它们。不幸的是,这种方法需要一些工作。

uurv41yg

uurv41yg2#

我建议用Flink的状态来做这个(https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/stream/state/state.html). 您可以有一个valuestate对象来保存刚刚更新的资源的总值,或者您可以使用liststate来保存所有通过的值,并且每当发生新事件时,您可以对所有这些值进行重新计算。很明显,liststate使用的内存比单个主值要多,但是我不知道你需要什么。

相关问题