关于Flink中的时间概念

640?wx_fmt=png640?wx_fmt=png

对于流式数据处理,最大的特点是数据上具有时间的属性特征, Flink根据时间产生的位置不同,将时间区分为三种时间概念,分别为

  • 件生成时间( Event Time)

  • 事件接入时间( Ingestion Time)

  • 事件处理时间( Processing Time)

数据从终端产生,或者从系统中产生的过程中生成的时间为事件生成时间,当数据经过消息中间件传入到 Flink系统中,在 Datasource中接入的时候会生成事件接入时间,当数据在Flink系统中通过各个算子实例执行转换操作的过程中,算子实例所在系统的时间为数据处理时间。

Fink已经支持这三种类型时间概念,用户能够根据需要选择时间类型作为对流式数据的依据,这种情况极大地增强了对事件数据处理的灵活性和准确性。

1. 事件生成时间( Event Time)

事件生成时间是每个独立时间在产生他的设备上发生的时间,这个时间通常在事件进入Flink前就已经进入到事件当中了

2. 事件接入时间( Ingestion Time)

事件接入时间是数据进入Flink系统的时间,它主要依赖于其Source Operator所在主机的系统时钟。需要注意的一点是相比于其他两者,他是不能处理乱序事件,也就不用生成对应的Watermarks

3. 事件处理时间( Processing Time)

事件处理时间是指数据在操作算子计算过程中获取到的所在主机时间。在处理乱序事件时, 他不是最优的选择。Process Time主要用于时间计算精度要求不是特别高的计算场景,比如延时比较高的日志数据

4. 代码中更改时间类型

在Flink中默认情况下使用是Process Time时间概念,如果需要切换的话,可以使用以下代码进行切换

  val env = StreamExecutionEnvironment.getExecutionEnvironment  //通过TimeCharacteristic 指定事件处理  env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

640?wx_fmt=jpeg

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值