Flink: ValueState vs ReducingState/AggregatingState



Background

  • ValueState文档指出:partitioned single-value state.
  • ReducingState文档指出:combined using a reduce function
  • AggregatingState文档指出:eagerly pre-aggregated
  • ValueState扩展State,而ReducingStateAggregatingState都扩展MergingState

问题

  1. 各州何时合并?
  2. 我应该如何为某个问题选择正确的状态原语?
  3. 什么机制调用归约和聚合函数?它跳过非MergingState吗?

Fabian Hueske不久前(2018年5月6日(回答了我关于合并AggregateFunctions的问题。他说:

在数据流作业(我知道(中调用 merge(( 的唯一情况是会话窗口被合并。 例如,当您定义具有 30 分钟间隔的会话窗口并收到以下记录时 R1, 12:00:00 R2, 12:05:00 R3, 12:40:00 R4, 12:20:00

在这种情况下,Flink R1 将创建一个新窗口 W1,R2将分配给 W1,R3>创建一个新窗口 W2,R4 连接并合并 W1 和 W2。

我认为您的其他问题的部分答案是ValueState是通用(键控(状态。因此,当您实现泛型函数时,您最终会使用它,而不是聚合器或化简器(使用组合器(。

相关内容

  • 没有找到相关文章

最新更新