欢迎关注公众号——《数据三分钟》
一线大厂的师兄师姐结合自己的工作实践,将数据知识浅显道来,每天三分钟,助你成为数据达人。还有面试指导和内推机会。
上一节说到,实时计算中的数据可以看成无界流(unbounded stream),没有确切的结束时间,就像水流一样——逝者如斯夫,不舍昼夜。这也是实时数据区别于离线数据的地方,离线数据是有界的,有确定的开始时间和结束时间,因此所有的离线计算都是基于确定的有限数据展开的。
一、实时计算中时间的重要性
离线计算模式下,计算引擎摄入全量的需要计算的有界数据,按照确定的维度进行聚合,所有的计算过程都是确定的。但是在实时计算中却截然不同,首先实时计算是持续不断进行的,由于网络波动等情况不可避免,数据最终到达算子的时间和数据真实产生的时间并不一致,那么flink引擎以什么为计算的基准呢?又怎么去触发计算呢?这里就不得不提到窗口机制了,它是经典的无界数据的分组计算方式。流式计算中的数据是一条一条源源不断产生的记录,每一条记录都会有产生的时间、进入Flink引擎的时间和到达算子的时间,这些时间分别对应Event time、Ingestion time、Processing time,Flink就是按照这些时间对数据进行分组和计算的。