Flink水印机制(watermark)
Flink流处理时间方式
- EventTime
时间发生的时间,例如:点击网站上的某个链接的时间
- IngestionTime
某个Flink节点的source operator接收到数据的时间,例如:某个source消费到kafka中的数据
- ProcessingTime
某个Flink节点执行某个operation的时间,例如:timeWindow接收到数据的时间

设置Flink流处理的时间类型
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
问题

1. 使用时间窗口来统计10分钟内的用户流量
2. 有一个时间窗口
- 开始时间为:2017-03-19 10:00:00
- 结束时间为:2017-03-19 10:10:00
3. 有一个数据,因为网络延迟
- 事件发生的时间为:2017-03-19 10: 10 :00
- 秒中
4. 时间窗口并没有将 59 这个数据计算进来,导致数据统计不正确
这种处理方式,根据消息进入到window时间,来进行计算。在网络有延迟的时候,会引起计算误差。
水印(watermark)
水印就是一个时间戳,可以给每个消息添加一个 允许一定延迟 的时间戳
- 窗口可以继续计算一定时间范围内延迟的消息
- 添加水印后,窗口会等 5 秒,再执行计算。若超过5秒,则舍弃。
- 窗口执行计算时间由 水印时间 来触发,当接收到消息的 watermark >= endtime ,触发计算

Flink提供添加水印的API
|
val watermarkData: DataStream[Message] = clicklogDataStream.assignTimestampsAndWatermarks(new AssignerWithPeriodicWatermarks[Message] { var currentTimestamp: Long = 0L val maxDelayTime = 5000L var watermark: Watermark = null // 获取当前的水印 override def getCurrentWatermark = { watermark = new Watermark(currentTimestamp - maxDelayTime) watermark } // 时间戳抽取操作 override def extractTimestamp(t: Message, l: Long) = { val timeStamp = t.timestamp currentTimestamp = Math.max(timeStamp, currentTimestamp) currentTimestamp } }) |
Flink水印机制(watermark)的更多相关文章
- 一文搞懂Flink Window机制
Windows是处理无线数据流的核心,它将流分割成有限大小的桶(buckets),并在其上执行各种计算. 窗口化的Flink程序的结构通常如下,有分组流(keyed streams)和无分组流(non ...
- 自定义View 水印布局 WaterMark 前景色 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Flink 源码解析 —— 深度解析 Flink 序列化机制
Flink 序列化机制 https://t.zsxq.com/JaQfeMf 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭 ...
- flink time and watermark
流处理中时间本质上就是一个普通的递增字段(long型,自1970年算起的微秒数),不一定真的表示时间. watermark只是应对乱序的办法之一,大多是启发式的,在延迟和完整性之间抉择.(如果没有延迟 ...
- 老板让阿粉学习 flink 中的 Watermark,现在他出教程了
1 前言 在时间 Time 那一篇中,介绍了三种时间概念 Event.Ingestin 和 Process, 其中还简单介绍了乱序 Event Time 事件和它的解决方案 Watermark 水位线 ...
- 一张图说清楚Flink水印和Lateness
真传一句话,假言万卷书. Flink使用窗口与水印处理乱序问题,使用Latenss处理延迟问题,二者混合使用可以满足很多复杂场景的需求 当Watermark大于窗口结束时间时,会触发窗口内的元素进行计 ...
- Flink window机制
此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 问题 window是解决流计算中的什么问题? 怎么划分window?有哪几种window?window与时间属 ...
- Flink容错机制
Flink的Fault Tolerance,是在在Chandy Lamport Algorithm的基础上扩展实现了一套分布式Checkpointing机制,这个机制在论文"Lightwei ...
- Flink容错机制(checkpoint)
checkpoint是Flink容错的核心机制.它可以定期地将各个Operator处理的数据进行快照存储( Snapshot ).如果Flink程序出现宕机,可以重新从这些快照中恢复数据. 1. ch ...
随机推荐
- ELMO,BERT和GPT简介
1.Contextualized Word Embedding 同样的单词有不同的意思,比如下面的几个句子,同样有 “bank” ,却有着不同的意思.但是用训练出来的 Word2Vec 得到 “ban ...
- 《剑指offer》面试题11 数值的整数次方 Java版
书中方法:这道题要注意底数为0的情况.double类型的相等判断.乘方的递归算法. public double power(double base, int exponent){ //指数为0 if( ...
- stringstream流分割空格
1205 单词翻转 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 给出一个英语句子,希望你把句子里的单词顺序都翻转 ...
- 【接口工具】接口抓包工具之Fiddler
一.Fiddler的基本功能介绍 Fiddler的官方网站: https://www.telerik.com/purchase/fiddler Fiddler是最强大最好用的Web调试工具之一,它能记 ...
- Hibernate4教程二:基本配置(2)
<hibernate-mapping>元素 这个元素是xxx.hbm.xml配置的根元素,定义如下: java代码: <hibernate-mapping schema=" ...
- ASE Alpha Sprint - backend scrum 4
本次scrum于2019.11.8再sky garden进行,持续10分钟. 参与人: Zhikai Chen, Jia Ning, Hao Wang 请假: Xin Kang, Lihao Ran, ...
- 【记录】elastiasearch 6.4.3 版本 SearchRequestBuilder字段排序,BoolQueryBuilder
参考地址: 1:https://www.cnblogs.com/shoutn/p/8027960.html 2:https://www.jianshu.com/p/8402eb930ae7 3:htt ...
- Linux设置数据库自动备份
本文为转载,最末端为原地址 以CentOS 7.6系统与Oracle 11g为例: 一.先找到数据库的环境变量 如果是在root账户下,须先登录到数据库所在账户 su oraclecat ~/.bas ...
- MySQL数据库使用xtrabackup备份实现小例子
关于MySQL数据库的备份的工具和方式也比较多,本文只简单介绍一些我司一个平台的备份方案.Xtrabackup是由percona开源的免费数据库热备份软件,但是只能对InnoDB数据库和XtraDB存 ...
- hadoop1.2.1配置与运行子串统计程序
一.虚拟机版本 VirtualBox-4.3.30 二.操作系统 CentOS-6.7-x86_64-bin-DVD1.iso 下载地址1:http://www.centoscn.com/Centos ...