Flink中的时间与窗口

数据的相关时间包括:

  • event-time:事件产生的时间,也可以理解成业务时间。
  • ingestion-time:进入Flink的时间。如果没有事件时间可以用这个时间取代。
  • processing-time:执行Operator算子的处理时间,本地系统时间,与机器无关。Flink默认使用处理时间

Flink支持使用窗口Window将无界流划分为有界流来计算,窗口分为:时间窗口(Time Window)和计数窗口(Count Window),例如时间段,数据条数。时间窗口中有:

  • 滚动窗口:Tumbling Window,固定的时间间隔(窗口长度),中间不间断的划分。时间对齐(每个用户的时间划分都是一样的),数据不重叠。
  • 滑动窗口:Sliding Window,由固定的窗口长度和滑动间隔组成。窗口长度固定,数据可以有重叠。滚动窗口是滑动窗口的特例(步长正好是窗口长度)。
  • 会话窗口:Session Window,由一系列会话事件组成,分割点是会话超过一定的时间间隔,超过后再开始就开启下一个会话窗口。时间无对齐。

计数窗口也包括上面的滚动和滑动窗口,没有会话窗口。

窗口切分完就需要用窗口函数进一步计算。窗口函数主要分为:

  • 增量聚合(Incremental Aggregation Function):每条数据到来就进行计算,保持一个简单状态。有ReduceFunction,AggregateFunction等,min,minBy,max,sum等都属于。
  • 全窗口函数(Full Window Function):把窗口所有数据收集起来,计算时遍历所有数据。ProcessFunction,ProcessWindowFunction。全窗口拿到的数据更多,上下文和窗口对象。

你可能感兴趣的:(大数据,flink,大数据,Tumbling,Sliding,事件时间)