1、事件时间:
指的是数据产生的时间或是说是数据发生的时间。
在Flink中有三种时间分别是:
Event Time:事件时间,数据产生的时间,可以反应数据真实发生的时间
Infestion Time:事件接收时间
Processing Time:事件处理时间

为什么会提出事件时间这个概念?
因为当使用Processing Time(事件的处理时间)来对数据进行处理,此时数据可能会乱序,没有办法还原数据本身的时间顺序,这种情况在Flink中会可能导致数据丢失,如果使用事件时间,它会根据事件真实发生的时间对数据排序,就不会出现数据乱序的情况。
总结来说,数据产生的时间就是事件时间,现实中实时的时间就是事件的处理时间
2、Processing Time 事件处理时间
处理时间是接收数据过后对数据操作的时间。处理时间的会按照实时的时间触发。
public class Demo03ProcessingTime {
public static void main(String[] args) throws Exception{
/**
* 数据处理时间:一般会结合窗口使用,一般值的是接受数据后对数据操作的时间
* 需求:每过5秒中统计15秒内的单词的数量
*/
//构建Flink的环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//使用socket模拟实时的操作
DataStreamSource<String> wordDS = env.socketTextStream("master", 8888);
//将接受的数据的转换成kv的格式
SingleOutputStreamOperator<Tuple2<String, Integer>> kvDS = wordDS
.map(word -> Tuple2.of(word, 1), Types.TUPLE(Types.STRING,Types.INT));
//按照单词进行分组

最低0.47元/天 解锁文章
641

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



