- 博客(6)
- 收藏
- 关注
原创 Flink -- 状态管理
Flink中算子任务可以分为有状态和无状态。无状态的算子任务只需要观察每个独立事件,根据当前输入的数据直接转换输出结果。比如map、flatmap有状态的算子,除了当前数据之外,还需要一些其他的数据来得到计算结果。这些其他数据,就是所谓的状态。比如聚合算子、窗口算子都属于有状态算子。
2024-09-28 09:01:43 340
原创 flink -- 处理函数
ProcessFunction底层继承了AbstractRichFunction,有两个泛型表示输入和输出。其中有一个抽象方法processElement必须要实现,另一个非抽象方法onTimer1) 抽象方法processElement对于流中的每个元素都会调用一次,参数包括三个,输入的数据值value、上下文ctx、收集器collector out,这个方法没有返回值,处理之后的输出数据是通过收集器out定义的2) 非抽象方法onTimer类似于闹钟,只有在注册好的定时器触发时才会调用。
2024-09-27 21:21:31 634
原创 flink -- 合流
根据key进行合流相当于关系数据库中表的join操作。flink中两条流的connect操作,就可以通过keyby指定键进行分组后合并,实现类似sql的join。
2024-09-27 19:46:38 130
原创 Flink 水位线(Watermark)个人总结
在Flink中,用于衡量事件时间进展的标记,被称为水位线。可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点。主要内容就是一个时间戳,用来指示当前的事件时间自身理解:本质上就是一个时间戳,表示比这个时间早的事件已经全部到达。并且在数据乱序的情况下,通过水位线可以判断出迟到的数据。
2024-09-27 17:25:41 694
原创 Flink的时间语义 -- 通俗介绍(包含零点漂移问题)
前一天23:59:59发送过来的数据,但是由于延迟发送到了下一天的分区,这条数据就具有偏差(离线数仓经典问题)。对于flink,具有事件时间,这个时间点是比较重要的,是保证计算结果准确的重要因素。喝牛奶这个时间为处理时间。一般情况下,业务日志数据中都会记录数据生成的时间戳(timestamp),它就可以作为事件时间判断的基础。"时间" 对于flink来说是非常重要的,大致可以分成两大类:事件时间和处理时间(flink的时间语义):一个数据产生的事件(比如2.30分下单操作,事件时间就为2.30分)
2024-09-27 11:09:04 84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人