Flink WaterMark 的了解 (更新)

我来讲下 我理解的WaterMark (一起探讨)
/***
 * 如果要去了解一个东西 : 我认为需要从以下几个点去分析
 * 1. 是什么(概念一点)
 * 2. 解决了什么问题以及是如何解决的
 * 3. 如果去使用 如何下手
 * 4. 他会牵扯的一些问题
 *
 *  好了 让我们去探讨这个东西
 * 1. 首先 WaterMark 是一个全局标签,本身是一个时间戳
 * 2. 其次 我认为它解决的问题 就是 窗口的触发时机以及对于乱序数据的数据保障(或者说数据乱序情况下依然分配进属于它的窗口中)
 *      {
 *          1.窗口的触发时机问题: (有两个关键词 1:Partition Watermark , 2:事件时间时钟)
 *              -- 任务会对flink的输入分区维护相应的Partition Watermark.
 *                  当检测到某一分区有输入后,系统会提取该输入事件的watermark与当前分区的watermark 进行比较
 *                  并将大的watermark更新当前Partition watermark(相当于是一个更新操作);
 *                  更新后会将 Partition Watermark (分区) 中最小的那个watermark 作为事件时间时钟 向下游发送 后续就是trigger的操作了
 *                 [watermark 就是告诉算子 不用再等 那些时间戳小于或等于该WaterMark的事件了]
 *
 *          2. 乱序数据的数据保障
 *              -- 可以在接收到事件后根据事件本身所携带的时间 - 延迟时间 后 通过 assigner 去做具体数据分配
 *      }
 *
 *    摘抄 有一个例子: 就是你在走,后面有一个小朋友也在走。他和你保持一个距离,小朋友只前进不后退。你有可能后退。
 *              但是如果你比小朋友还慢,就表示你迟到太久了,应该被单独处理(丢弃/sideOutput)。
 *
 * 3. 关于具体使用的话 只需要去实现 两种WaterMark的生成接口 按照自己业务去生成 其他信息看具体实现
 * {@link org.apache.flink.streaming.api.functions.AssignerWithPeriodicWatermarks<T>}
 * {@link org.apache.flink.streaming.api.functions.AssignerWithPunctuatedWatermarks<T>}
 *
 * 4. 牵扯到的问题 {
 *     1. 生成水位线的频率 快/慢 各有优缺
 * }
 */
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值