十、WaterMark特殊的数据记录,必须单调递增 处理乱序事件,正确处理乱序事件,通常用WaterMark结合Windows实现 当时间戳达到窗口关闭时间,不应该立即触发窗口计算,等待一段时间,等待延迟再关闭窗口
水位线分配策略 周期性:以固定事件间隔来发出水位线并且推动事件前进 。默认间隔为200毫秒 AssignerWithPeriodicWatermarks 定点水位线分配:根据输入事件的属性来生成水位线 AssignerWithPunctuatedWatermarks
十一、Flink检查点算法基于Chandy-Lamport分布式快照算法来实现 该算法不会暂停整个应用,而是会把任务处理和检查点分离,这样在部分任务持久化状态过程中,其他任务还可以继续执行 。 检查点的原理步骤: 1.由JobManager向Source数据源任务生成一个新的检查点编号,Source算子接收到信息后,暂停发出记录,利用状态后端触发生成本地状态检查点,状态后端保存完检查点后通知任务,随后任务向JobManager发送确认信息,随后恢复正常工作,然后生成特殊的CheckPoint Barrier记录,以广播的形式发送到下游任务 。 2.当下游Transform算子接收到新的检查点分割符号,会暂停处理并且缓存当前流的数据,等待接收其他分区的检查点分隔符,所有分隔符到达后,通知状态后端生成检查点,保存通知JobManager后,向下游发送检查点分隔符CheckPoint Barrier后,继续处理数据 。 3.Sink算子接收到分隔符后依次等待分隔符到齐后,生成快照并且写入检查点,向JobManager确认 。 4.当JobManager确认已接受所有应用任务返回检查点确认消息后,将此次检查点标记为完成 。
十二、Flink算子12.1基本操作1.map 对每个元素应用函数返回新的结果 2.filter 给出给定的条件过滤数据 3.flatMap 转换类似map,对每个输入产生零个、一个或多个输出事件,事实可以看作filter和map的泛化
12.2KeyedStream从逻辑上将事件按照键值分配到多条独立的子流中 1.keyBy:指定的键值将一个DataStream转化为KeyedStream 2.滚动聚合:滚动聚合作用与KeyedStream上,它将生成一个包含聚合结果的DataStream,主要操作有:sum、min、max、minBy、maxBy 3.Reduce:滚动聚合的泛化,它将一个ReduceFunction应用在一个KeyedStream上,每个到来的事件都会和Reduce结果进行一次组合,从而产生一个新的DataStream
12.3多流转换将多条流联合起来处理,或将一条流分割成多条流以应用不同逻辑 。 Union:合并两条或多条类型相同的DataStream,生成一条新的类型相同的DataStream Connect:接收一个DataStream并返回一个ConnectedStream对象 Split和Select:union转换的你操作 。将输入流分割成2条或多条类型和输入流相同的输出流 。
经验总结扩展阅读
- 理解婉瑜质疑婉瑜成为婉瑜是什么梗
- 《浪姐4》成团名单曝光 《浪姐4》哪些人成团了
- RDEA 谣言检测《Rumor Detection on Social Media with Event Augmentations》
- 有什么好看的虐心小说推荐
- 整篇 小猫钓鱼的故事
- 关于街舞的电影
- 《瓦尔迪斯传说:深渊之城》图文攻略 深渊传说图文攻略
- 锦绣未央里九公主是谁演的
- aph是什么
- 妹妹找哥泪花流原唱
