flink专栏-时间概念/watermark实践

前言:

参考极客时间 Flink核心技术与实战

一、flink时间概念

1. flink时间分类

event time:事件时间

storage time: 时间接入消息中间件的时间

ingestion time:数据接入flink系统的时间

processing time:数据transform过程中的时间

2. processing time:

定义:基于机器本地的时间

特点:统计结果可能不固定,具有不可复现性

3. event time:

定义:事件发生的先后关系

特点:可复现

4. stream中设置时间语义:

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);

// 该方法Deprecated, 默认为 event time

二、watermark

1. flink基于event time的处理流程:

a. 获取streamElement 的 eventTime 时间戳

b. 接入的数据何时可以触发统计计算(watermark)

2. watermark:

作用:标记event-time 前进过程,表明所有较早的事件已经到达,用以解决乱序和延时问题

特点:watermark随着event-time变动,并自身携带timestamp

场景:

a. 有界乱序事件下的watermark

要求:event不可完全无序,应当仅具有一定无序性,即maxOutOfOrderness不能无限大

此时,watermark中的时间戳=事件最大时间戳-maxOutOutOfOrderness

b. 并行系统中的watermark

特点:

  • 事件的标识:key+时间戳
  • 每个算子有自己的时钟
  • watermark是一种特殊的事件,会随着数据处理流程发送到下游的算子
  • 当watermark发送给下游算子后,会更新下游算子时间戳

三、watermark与window的联系

  • watermark=Max event time- lateThreshold
  • late Threshold越高,数据处理延时越高
  • 窗口触发条件:current watermark > window endtime
  • watermark 主要目的是告诉窗口不会有比当前watermark更晚的数据到达
  • idel watermark仅会发生在顺序事件中

idel watermark(图中虚线,理想的watermark):

四、在flink中定义watermark

 1. 分类:

periodic watermark: 基于event time产生,使用event time - 延迟产生

punctuated watermark: 基于固定事件产生 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值