outputMode分类
- append
- update
- complete
trigger和window的区别
window可以认为是统计窗口,
比如我们需要统计5分钟的访问量,则窗口为滚动窗口,窗口大小为5min,步长为5min
比如我们需要每隔1分钟统计过去5分钟的访问量,则窗口为滑动窗口,窗口大小为5min,步长为1min
trigger视为批次,因为structed stremaing是流式处理,而对于这种窗口统计,我们需要按批量处理。比如上面5min的窗口,我们设置10s中的trigger,则10s对数据做一次计算,然后5min做一个整体的计算。
而outputMode就是针对一个窗口内的不同trigger是否输出数据和输出什么样的数据
不同mode的区别
举一个例子:
如果我们需要做统计打点图,打点粒度是5min,我们10s一个trigger:
如果outputMode=update,则每个trigger完成之后只要数据有更新,则会输出一次。所以打点图的效果五分钟的点会随着每个trigger后数据的变化而变化,这样的结果适合输出的redis,通过key进行覆盖;或者放到hbase,通过rowkey去增加版本
如果outputMode=append,则每个trigger完成之后无论数据是否有更新,都不会输出,他只会再窗口结束的时候,也就是5min的时候才会有一次整体的输出。所以打点图的效果是只有再5min的窗口到达之后,才会有一次输出,也就是打的点只有再窗口结束才会出现
image.png
image.png
-
complete
每次都会输出全量的结果数据
image.png
每个窗口的数据都会记录下来,
Complete mode does not drop old aggregation state since by definition this mode preserves all data in the Result Table.
如下图
image.png
网友评论