zoukankan      html  css  js  c++  java
  • Flink Window的allowedLateness

      基于Event-Time的窗口处理流式数据,虽然提供了WaterMark机制,却只能在一定程度上解决了数据乱序的问题。但在某些情况下数据可能延时会分厂严重,及时通过WaterMark机制也无法等到数据全部进入窗口再进行处理。Flink中默认会将这些迟到的数据做丢弃处理,但是有些时候用户希望及时数据延迟到达的情况下,也能够正常按照流程处理并输出结果,此时就需要使用Allowed Lateness机制来对迟到的数据进行额外的处理。

      通常情况下用户虽然希望对迟到的数据进行窗口计算,但并不想将结果混入正常的计算流程中,例如用户大屏数据展示系统,及时正常的窗口中没有将迟到的数据进行统计,但为了保证页面数据显示的连续性,后来接入到系统中迟到数据所统计出来的结果不希望显示在屏幕上,而是将延时数据和结果存储到数据库中,便于后期对延时数据进行分析。对于这种情况需要借助Side Output来处理,通过使用sideOutputLateData(OutputTag)来标记迟到数据计算的结果,然后使用getSideOutput(lateOutputTag)从窗口结果中获取lateOutputTag标签对应的数据,之后转成独立的DataStream数据集进行处理,创建late-data的OutputTag。再通过该标签从窗口结果中将迟到数据筛选出来。

      注意:如果有WaterMark同时也有Allowed Lateness。那么窗口函数再次出发的条件是:waterMark < end-of-window + allowedLateness

  • 相关阅读:
    【芯片】国产MCU替代ST芯片调查
    【生产线】包装如何防止配件漏装
    【标准】运输振动试验
    【bat】批量提取文件夹内文件的名称
    【VBA】从批量excel文件中获取数据
    【滤波器】抗混叠滤波器
    【元器件】晶振TCXO、OCXO
    【C】三点求抛物线顶点
    德卡T10读卡器 读取身份证号码和身份证UID
    C# 执行查询语句,返回DataSet
  • 原文地址:https://www.cnblogs.com/zbw1112/p/14060268.html
Copyright © 2011-2022 走看看