| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> WaterMark使用和详解 -> 正文阅读 |
|
[大数据]WaterMark使用和详解 |
WaterMark翻译为水位线,什么时候用到水位线呢? 比如说水控在顺水的时候达到紧梯就会触发,若不放水就可以发现危险的现状 在spark程序划分成窗口的时候,主要是衡量什么时候触发,这也是需要用到的水位线,其实它是来判断水位窗口触发的机制,在这个窗口水位线会不停的增加。 其实水位线有两种方式获取,一种是根据数据时间来提取,另一种是定期生成水位线。 当我们输入的数据有大也有小的,它就会用这个分区最大的Eventime作为它的水位线。 那么这个水位线是怎么计算出来的? 实水位线还有一个作用,让窗口延迟发,举一个例子,我们在生产环境中,拉数据是从中间件拉取出来的,如kafka。 在kakfa下有多个分区,由生产者写入进入,在生产者有2个或多个写,当一对一写完,它还会切换写,在kafka里如果只有一个分区它是有序的,但是多个分区就无法保证它是有序的。 一开始写一条数据,在另一个消费者会有延迟, 比如:第一个生产者由于网络的问题就会发生延迟效果,如图所示: ?接下来,采用flink从kakfa里面的数据拉过来 ,但是如何拉取呢?其实flink的并行再大,它的solt只有2个state ,通过直连拉数据有可能是延迟,但是如何容忍数据的延续时间,这一点就是需要解决数据乱序问题。其实,在窗口迟到的数据是不会被触发的 带着这个问题,可以去设计吗?可以的 1、Watermarks的设计主要从?它们定义何时停止等待早期事件 Flink中的事件时间处理取决于特殊的带时间戳的元素,称为watermarks,由数据源或watermarks生成器插入到流中。 具有时间戳t的watermarks可以被理解为断言(assertion?)所有具有时间戳<t的事件已经(具有合理的概率)已经到达 2、我们可以设想不同的策略来决定如何生成watermarks 我们知道每个事件都会在延迟一段时间后到达并且这些延迟会有所不同,因此有些事件会比其他事件延迟更多。 一种简单的方法是假设这些延迟受到一些最大延迟的限制。 Flink将此策略称为有界无序watermarks。 很容易想象出更复杂的watermarks方法,但对于许多应用来说,固定延迟效果还不错。 代码实现:
查看job:http://localhost:8081/#/job/01840ac7b18e65bbec107848545fe68e/overview 使用场景(解决问题)? 处理乱序数据:flink中是实时处理数据,但是在处理数据的时候会出现因为网络传输的问题,所以数据先产生的反而到后面才到达,在被处理时候就会出现数据混乱,而且因为开窗,窗口关闭但是本窗口的数据来迟,导致数据丢失; 多并行度下的watermark 一个子任务中watermark会发往所有下一算子中的子任务,也就是一发多, |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 1:00:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |