createTimeSeriesEngine的outputElapsedMicroseconds参数计算规则

时序引擎对以下聚合计算算子进行了优化,实现了增量计算,显著提升了性能:corr, covar, first, last, max, med, min, percentile, quantile, std, var, sum, sum2, sum3, sum4, wavg, wsum, count, firstNot, ifirstNot, lastNot, ilastNot, imax, imin, nunique, prod, sem, mode, searchK。

问题1:对于这些增量计算的函数,增量计算指的是每次有数据进来就会进行一次计算,把中间结果存储到缓存里。那此时ts引擎outputElapsedMicroseconds参数输出的耗时是什么概念呢?
问题2:时序引擎设置的窗口step是每1秒触发一次计算。如果时序引擎前面串行了另一个lookuip引擎,假如有一行数据在lookup引擎处卡了很久,用了5秒才计算完输入到时序引擎中,那这5秒中的每一秒,时序引擎还会触发计算吗?
请先 登录 后评论

最佳答案 2024-01-17 11:20

1. 计算缓存的增量结果可以帮助本次计算提升性能,具体的做法为由于窗口每次移动一个 step, step 又必须被 window 整除,这样每次滑动,只改变一个 step, 引擎内部缓存每个 step 的计算结果,如果是计算 sum,则只要将之前的 step 减掉然后加上新数据的 step 窗口即可,从而达到提升计算性能的目的。ts engine 的触发计算是同时触发一批(可以理解成 step)数据一起计算,然后输出一条聚合结果,耗时就是从被触发到输出的耗时。

2. 不是很理解你这里的时间戳概念。如果是用的数据的时间戳计算,触发是依据数据的时间戳进行的,step 1s,那就是 1s 的间隔算一次。如果是按照系统时间,上游卡住确实会影响正常的输出,如果指定了 fill,中间空的窗口会 fill 以后输出。

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 0 收藏,253 浏览
  • ivan 提出于 2024-01-17 08:55

相似问题