1、事件时间(Event Time):
事件时间是每个独立事件在产生它的设备上发生的时间,这个时间在事件进入Flink之前就已经嵌入到事件中,时间顺序取决于事件产生的地方,和下游数据处理系统的时间无关。2、接入时间(Ingestion Time)
接入时间是数据进入Flink系统的时间,接入时间依赖Source Operator 所在主机的系统时钟。因为接入时间在数据接入过程生成后,时间戳不在发生变化,和后续处理数据的Operator所在机器的时钟没有关系,所以不会因为某台机器时钟不同步或网络延迟而导致计算结果不准确的问题。相比于Event Time,Ingestion Time 不能处理乱序事件,因此不用生成对应的Watermarks.
3、处理时间(Processing Time)
处理时间是指数据在操作算子计算过程中获取到的所在主机。当用户选择使用Processing Time 时,所有和时间相关的计算算子,例如Windows计算,在当前的任务中所有算子将直接使用其所在主机的系统时间。基于Processing Time 时间概念,Flink 的程序性能相对较高,延迟也比较低,对接入到系统中的数据时间相关的计算完全交给算子内部决定。虽然性能和易用性上有优势,但在处理数据乱序时,Processing Time 不是最优的选择,数据本身不乱序,如果每台机器本身的时钟不同步也会导致数据处理过程中出现数据乱序,Processing Time 适用于时间计算精度不是特别高的计算场景。
var env = StreamExecutionEnvironment.getExecutionEnvironment() //在系统中指定EventTime env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
标签: time、processing、乱序、时钟、接入
笔试题
刷题
简历模板
AI算法
大数据
内推
内推: