Process Time 和 Event Time 概念对比

  
 
 
 
Process Time
流处理引擎接收到数据的时间。数据真正到达计算框架中被处理的时间点,简单的说,就是你的程序是什么时候读到这条日志的。
 
 
spark  streaming中一般默认使用Process Time,且不支持Event Time
 
Event Time
数据生成时携带的时间就是事件时间。就是数据真正发生的时间,比如用户浏览了一个页面,或者下了一个订单等等,这时候通常就会有一些数据会被生产出来,比如前者可能会产生一条用户的浏览日志
 
一般数据中存在一个timestamp列,用于存放事件时间,这样就可以基于EventTime处理。WaterMark会强制要求数据中存在timestamp列,否则当做Process Time处理。
 
spark structured 一般默认使用Event Time,
 
 
以窗口计数为例说明一下区别:
 
    这里以10分钟为窗口间隔,5分钟为滑动间隔,每隔5分钟统计过去10分钟网站的pv
 
    假设有一些迟到的数据,其本身事件时间是12:01,被spark接收到的时间是12:11;在spark streaming的统计中,会毫不犹豫的将它算作是12:05-12:15这个范围内的pv,这显然是不恰当的;在structured streaming中,可以使用事件时间将它划分到12:00-12:10的范围内,这才是我们想要的效果。
    
 
 
 
 
posted @ 2020-12-19 23:39  dos_hello_world  阅读(675)  评论(0)    收藏  举报