开发者社区> 问答> 正文

关于flink窗口是否正确关闭的问题

各位大佬好:

  最近在使用flink stream api处理数据,逻辑是非常简单的ETL操作

  我自己定义的一个1分钟的tumble窗口,watermark是10s,当处在流量高峰时段时,发现下游出现了数据丢失的问题。

  举个例子:我上游topic 5000/s,下游接受数据的topic只有4000/s

  在流量低谷时就没有这个问题,而且我把窗口去掉后也没有这个问题,是否是窗口被提前关闭了呢?导致我下游的processfunction还没处理完?

  ps:我加大了并行度还是不行*来自志愿者整理的flink邮件归档

展开
收起
EXCEED 2021-12-08 11:31:40 735 0
1 条回答
写回答
取消 提交回答
  • 使用基于EventTime 的 watermark处理数据通常会碰到两这么两种情况:

    1. 数据因为乱序,迟到严重,会被丢弃,这个可以查看Side Out API [1]

    2.

    数据产生的事件时间比当前系统时间大,我称之为“超自然数据”,比如当前系统时间是10:37:55,但数据产生的事件时间可能是10:38:55,那么一旦有这类数据到达,将会使窗口提前触发计算,导致正常数据被当做迟到数据,因而被丢弃,这个处理方式是在assignWaterMark

    之前过滤掉。

    1. 建议: 如果是简单的ETL,尽量不要用EventTime 来处理数据

    [1]

    https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/side_output.html*来自志愿者整理的flink邮件归档

    2021-12-08 13:58:00
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载