Flink源码阅读:流中的四种值类型

在DataStream中流动有的元素有四种类型,分别是Watermark,StreamStatus,StreamRecord和LatencyMarker.它们都是StreamElement的子类.下面分别介绍一下,对以后理解其他内容会有帮助.

继承关系图:

继承关系图

下面是对注释的翻译以及自己的理解

Watermark

指示元素timestamp小等于watermark的值都已经到了,算子通过调用org.apache.flink.streaming.api.operators.Output.emitWatermark(Watermark),将watermark发送到下游.

watermark在时间窗口上非常有用,窗口根据watermark触发,另外watermark可以用来处理迟到数据.

当source关闭的 时候会发送一个timestamp为Long.MAX_VALUE的watermark,当算子收到这个MAX_VALUE的watermark的时候就会知道不会再有输入了.

StreamStatus

StreamStatus可以代表两种状态,一种是IDLE,一种是ACTIVE.

以StreamStatus的角度会将任务分成SourceTask和StreamTask,StreamStatus从SourceTask生成并发出用来通知StreamTask是否会继续收到数据元素或者watermark.

当SourceTask读取不到输入数据的时候它会通过发送一个IDEL状态表示暂时停止提交数据元素和waterma

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值