Flink:ValueState与ReducingState / AggregatingState

时间:2019-09-15 10:58:29

标签: apache-flink

背景

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

问题

  1. 国家何时合并?
  2. 对于某个问题,我应该如何选择正确的状态原语?
  3. 哪种机制调用reduce和聚合函数?它会跳过非MergingState吗?

1 个答案:

答案 0 :(得分:1)

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

  

在DataStream作业中(我知道)调用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是通用(键)状态。因此,当您实现通用功能时,而不是聚合器或归约器(带有组合器)时,就会使用它。