Flink-Window And Time

术语理解

  1. 什么是streaming流式计算
    一种被设计用于处理无限数据集的数据处理引擎
  2. 什么是无界数据
    一种不断增长的本质上无限的数据集
  3. window在streaming计算中承担/贡献什么样的作用
    window是一种切割无限数据为有限块进行处理的手段

Window

Window 类型

  1. CounterWindow
  2. TimeWindow
  • Tumbling Window(适合BI监控、BI统计)
    时间对齐、窗口长度固定、没有重叠
  • Sliding Window(对最近一个时间段内的统计,例如求某个接口最近5min的失败率来决定是否要报警)
    时间对齐、窗口长度固定、有重叠
  • Session Window
    是有一系列时间组和一个指定时间长度的timeout间隙组成,类似与web应用的session。也就是一段时间没接受到新数据就会生成新的窗口,时间无对齐,适合用于线上用户行为分析

预定义KeyedWindow

  • .timeWindow(Time.seconds(30)) --- Tumbling
  • .timeWindow(Time.seconds(30), TIme.seconds(10)) --Sliding
  • .countWindow(1000) --- Tumbling count
  • .countWindow(1000, 10) --- sliding count
    -. window(SessionWindow.withGap(Time.minutes(10)))

Window 聚合分类

  • 全量聚合
    等属于窗格的数据到齐,才开始进行聚合计算,主要两个函数apply 和 process , 适合九分为、排序
    keyBy --> window --> process 这个流程
  • 增量聚合
    窗格每进入一条数据,就进行一次计算

Time

Time类型

  • EventTime
  • IngestTime
  • ProcessingTime
Time

EventTime And WaterMark

问题:在使用eventtime怎么处理乱序的数据
WaterMark: 水位线

  • 参考google的DataFlow
  • 是event time处理进度的标志
  • 表示比watermark更早的事件都已经到达(没有比水位线更低的数据)
  • 基于watermark来进行窗口触发计算的判断
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容