从数据的产生到数据被处理有三个重要的时间节点,搞清楚这三个时间节点,形成关于它们的概念,了解它们之间的关系,对帮助开发者编写正确的数据处理逻辑程序至关重要。
Event Time
事件时间,也就是数据发生的时间,比如电表在某个时间点上的读数,交通工具在某个时点上的位置和速度等。事件时间由传感器提供,它早于处理数据的程序拿到它的时间。在做差值计算时,开发者应该使用事件时间,而不是数据处理程序拿到数据的时间,才能获得正确的差值计算结果。
Ingestion Time
采集时间,指的是数据被传入消息队列等数据采集工具的时间。它晚于事件时间。由于事件时间一般来自于传感器等第三方系统,而第三方系统可能不被信任,开发者可以使用采集时间代替事件时间,当然前提是采集时间和事件时间之差在可接受的范围内。
Processing Time
处理时间,指的是数据被处理时的时间。它晚于采集时间,有时候可能会大大地晚于事件时间和采集时间。这是数据处理程序在处理数据时记录的时间。开发者如果使用这个时间来做差值计算就会得到异常的结果。
三个时间概念的关系
三个时间概念中事件时间最早,其次是采集时间,再次是处理时间。数据处理程序应该记录事件时间,这是数据处理的集成,其次是处理时间以便于审核数据处理过程。采集时间可以用来考察数据采集程序的效率。处理时间和采集时间的差值可以看出流式处理程序的是否实时。
举例
以下是通过某电表能耗的差值计算过程,展示了三个时间概念的关系。