flink workmark+window超時后处理 allowedLateness、sideOutputLateData

本文探讨了在Flink开发中处理乱序日志数据的挑战及解决方案,详细介绍了使用watermark、allowedLateness和sideOutputLateData机制来确保数据的正确处理,通过实例代码演示了这些机制如何共同工作以解决数据延迟和乱序问题。

背景:

在flink实际开发过程种:
一般我们处理日志数据时候,我们会指定event time 作为我的时间作为程序内窗口函数内时间基准。

问题:但是由于部分机器节点存在网络延迟等原因,并且kafka 消息队列本身也不能保证全局消息的一致性的问题。导致时间乱序并且延迟问题。为了解决这种问题flink 提供三种方式来改变这个问题。
分别是watermark allowedLateness() 和sideOutputLateDate() 三种机制来保证获取并处理数据。

三种结合使用例子:

import org.apache.flink.streaming.api.TimeCharacteristic
import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.windowing.assigners.SlidingEventTimeWindows
import org.apache.flink.streaming.api.windowing.time.Time
 
object demo1 {
  def main(args: Array[String]): Unit = {
    val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
    env.setParallelism(1)
    //从调用开始给env创建的每一个streamin 追加时间特征
    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime )
    val inputStream: DataStream[String] = env.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值