spark-streaming之window窗口理解

val ssc: StreamingContext = new  StreamingContext(conf,Seconds(5))  // //batchdurat
xxx.window(Minutes(60),Seconds(10)) // windowduration slideduration默认=batchduration

要理解spark-streaming 窗口要理解上面的三个时间单位

second(5)是指spark将流式数据划分为几秒一个批次,我这里是5s

minutes(60)是指开窗的长度是60min,其中这个窗口的开始点是你程序开始运行或者说spark接收到数据那一秒开始算

seconds(10)是指滑动步长

主要说下batchduration windowduration

个人理解 如果batchduration=windowduration =60min 那么处理的数据是每个小时处理一个小时的数据

例如2:00处理1:00-2:00的数据,3:00的2:00-3:00的数据

当然这个是不现实的,因为spark-streaming处理的是实时数据按道理batchduration这个值越小就越接近实时,这个例子只是为了让你更好理解,

如果batchduration=windowduration =5s 那么窗口也只开了5s的窗口也不符合实际要求

最后解释下我上述代码的代表意义

每5秒处理一下流式数据(无延迟情况下)

1:00:00程序启动

1:00:05的时候处理了1:00:00-1:00:05的数据(聚合map filter),

1:00:10的时候处理了1:00:05-1:00:10的数据(聚合map filter),

然后把1:00:05和1:00:10两次处理的结果再计算

最后输出结果

然后过10s输出结果,直到2:00 输出1:00:00-2:00:00的结果,

但是2:00:00以后都只输出一个小时以内的计算结果

你可能感兴趣的:(spark-streaming之window窗口理解)