1.flink处理迟到数据
(1)watermark
AssignerWithPeriodicWatermarks
当flink基于eventtime的时间窗口处理数据时,必须确定所有该时间窗口内的数据全都进入之后,才会开始处理数据,由于数据可能是乱序的,在watermark里面有个时间戳,flink会使用watermark标记所有小于该时间戳的消息都已流入,当操作符处理到WaterMark时,它对所有小于该WaterMark时间戳的时间窗口的数据进行处理并发送到下一个操作符节点,然后也将WaterMark发送到下一个操作符节点
(2)允许窗口处理迟到数据
对于窗口计算,如果水位线已经到了窗口结束时间,默认窗口就会关闭,那么迟到数据就要被丢弃,因此可以设置延迟时间,允许继续处理迟到数据的。默认情况下延迟时间为0,若设置延迟时间后,watermark超过窗口结束时间戳,但未超过 延迟后的时间戳,迟到数据仍然可添加到窗口中,触发计算。
中间过程可视为,在水位线到达窗口结束时间时,先快速地输出一个近似正确的计算结果;然后保持窗口继续等到延迟数据,每来一条数据,窗口就会再次计算,并将更新后的结果输出。逐步修正计算结果,最终得到准确的统计值。
(3)将迟到数据放入侧输出流
窗口后关闭,仍然有迟到数据,则用侧输出流来收集关窗后的迟到数据,保证数据不丢失。因为窗口已经真正关闭,只能将之前的窗口计算结果保存下来,然后获取侧输出流中的迟到数据,判断数据所属的窗口,手动对结果进行合并更新
2.Task subtask 区别
在flink web ui 上,点开webui,会有很多的块,块和块之间是箭头相连的,这一个块就是一个task,这个块里面包含了多个操作算子,比如map,filter,task会把这多个操作算子连成一个chain,前提并行度相同并且没有重分区
而subtask就是点开task后里面的并行度,比如有3个并行度,就有3个subtask,每个subtask会以一个独立的线程去运行
3.webui
flink webui上有哪些东西

最低0.47元/天 解锁文章
1458

被折叠的 条评论
为什么被折叠?



