大数据之路系列之Flink高级进阶(13)

大数据之路系列之Flink高级进阶


state

状态,当前流计算任务执行过程中需要用到之前的数据,那么之前的数据就可以称为状态。
可以理解为历史流数据。
主要是为了解决两个问题:
1.解决流计算中需要使用历史流数据问题,流计算中去重场景。
2.解决流中数据一致性问题
在这里插入图片描述
这个图里面显示了Flink实现流计算去重的业务流程,source组件接入实时数据流,中间在具体的算子中对实时数据进行去重,这里借助于State实现去重,也就是将source传输过来的数据存储到State中,只保留不重复的数据,最后通过Sink组件将需要的结果数据写出去。
提示:借助Redis也是可以的,但是复杂性比较高

Window窗口

通常流是无界的,所以需要使用window进行划分,来计算过去几分钟或者最近100个元素的和。

tumbing windows

滚动窗口,窗口内没有数据是重叠的(统计指定时间内的数据计算)
在这里插入图片描述

sliding windows

滑动窗口,表示窗口内数据由重叠(统计连续时间内的计算,行程码)
在这里插入图片描述

window类型汇总

在这里插入图片描述

time window

根据时间对数据流进行切分。滚动窗口和滑动窗口
滑动窗口 window(SlidingProcessingTimeWindows.of(Time.seconds(5),Time.seconds(2))) 表示滑动的窗口大小是5秒,滑动间隔是2秒,也就是每2秒进行对前5秒的数据进行计算。
滚动窗口 window(TumblingProcessingTimeWindows.of(Time.seconds(5))) 表示滚动窗口的大小是5秒,每隔5秒就行聚合计算

countwindow

countwindow可以支持滚动窗口和滑动窗口

  • 其中countWindow(5)表示滚动窗口的大小是5个元素,当窗口中填满5个元素以后,进行计算
  • countWindow(5,1)滑动窗口,表示窗口的大小是5个元素,滑动的间隔是1个原色,每新增一个元素进行计算一次

countwindowAll timeWindowAll

使用countwindow和timewindow是需要先进行keyby,如果不打算分组的话使用countwindowAll或者临时timewindowAll

window聚合

  • 一种是增量的聚合
    增量的聚合每当进入一条数据进行一次计算,常见的增量的聚合函数:reduce、aggregate、sum、min、max

  • 一种是全量的聚合
    常见的全量聚合的函数,apply process

time

  • event time 事件产生的时间,通常是事件中的时间戳描述
  • ingestion time 事件进入flink时间
  • processiong time 时间被处理的当前系统时间
    -默认是 processing time
    设置不同的时间:
    TumblingEventTimeWindows
    TumblingProcessingTimeWindows

watermark 水位线

在使用eventtime的时候,由于网络原因会导致乱序产生,特别是kafka的时候,多个分区之间数据无法保证有序。在window计算的时候,我们不能无限制的等待下去,所以必须有一个机制保证特定的时间后必须触发window进行计算。这个机制就是watermark。使用watermark+eventTime解决乱序问题

有序的数据流

在这里插入图片描述
w(11)表示watermark是11,11之前的数据都到了,可以进行计算
w(20)表示20之前已经到了可以进行计算了。

无序数据流

在这里插入图片描述
w(11):表示11之前的数据都到了,可以对11之前的数据进行计算,大于11的暂时不要计算。
w(17)表示17之前的都到了,可以对17之前的数据进行计算,大于17的暂时不计算。

多并行度数据流watermark

在这里插入图片描述
多并行度的情况下,watermark有个对齐机制,会取所有channel中最小的watermark,这样才不会漏数据。

周期性生成和发送 with periodic watermarks

定义一个最大允许乱序时间(常用)with punctuated watermarks

todo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

居高声自远,非是藉秋风

千山万水总是情,赏个一块行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值