【问题标题】:Bootstrap flink state引导 flink 状态
【发布时间】:2018-04-05 15:22:23
【问题描述】:

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

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

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

如果我遗漏了什么,我很乐意提供更多详细信息。

谢谢

【问题讨论】:

标签: apache-flink flink-streaming stream-processing


【解决方案1】:

我建议使用 flink 的状态来执行此操作 (https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/stream/state/state.html)。您可以拥有一个 ValueState 对象来保存不断更新的资源的总价值,或者您可以使用 ListState 来保存所有通过的值,并且每当有新事件通过时对所有这些值进行重新计算。显然 ListState 会使用比单个主值更多的内存,但我不知道您的需求是什么。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多