apache-flink - 引导 flink 状态

标签 apache-flink flink-streaming stream-processing

我正在研究一个简单的聚合,它对给定资源上发生的事件总数求和(请参阅:
Calculate totals and emit periodically in flink )。在一些帮助下,我得到了这个工作,但现在遇到了另一个问题。

我正在尝试计算资源生命周期的总数,但我正在从保留期为 24 小时的 kinesis 流中读取事件。因为这意味着我无法访问之前发生的事件,所以我需要从每天计算一次总数的遗留(批处理)系统引导我的状态。

本质上,我想以某种方式从遗留系统中引导状态(加载昨天的统计数据),然后在此基础上从 kinesis 流中加入今天的数据,并避免在此过程中出现重复。理想情况下,这将是一个一次性过程,并且应用程序应该从 kinesis 开始运行。

如果我错过了什么,我很乐意提供更多细节。

谢谢

最佳答案

我推荐的是使用 flink 的状态来做到这一点( https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/stream/state/state.html )。您可以拥有一个 ValueState 对象来保存不断更新的资源的总值(value),或者您可以使用 ListState 来保存所有通过的值,并在新事件发生时对所有这些值进行重新计算。显然 ListState 会使用比单个主值更多的内存,但我不知道你的需求和你一样。

关于apache-flink - 引导 flink 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49676073/

相关文章:

java - 使用 Samza Runner 执行 Beam Pipeline 时出现 org.apache.beam.sdk.util.UserCodeException

java - 如何获取 Flink 中一条记录的 Kafka 时间戳?

apache-flink - Flink 计划中的 Hash、Forward 等术语是什么意思?

apache-flink - Apache Flink DataStream API 没有 mapPartition 转换

apache-flink - 将作业 jar 添加到 $FLINK_HOME/lib 时获取以下类转换异常

docker - Flink 1.7.0仪表板不显示任务统计信息

apache-flink - Apache Flink : Why do reduce or groupReduce transformations not operate in parallel?

apache-flink - Flink 窗口 : aggregate and output to sink

java - 通过每个项目的乐观锁定有效地将结果流存储在多个表中

python - 无法连接到 ID 为 1 的节点 : [Worker]: Error: ConnectionError ('No connection to node with id' )