Esper不会破坏对象,而是导致聚集对象的oom

时间:2019-07-15 09:49:19

标签: events out-of-memory dereference esper

我们是Esper,在某些事件集上聚合分组,但是esper并未取消引用该聚合对象。

esper queury

  private static final String HOURLY_CONTEXT =
  "create context HourlyRollup start(0,*,*,*,*,0) end(59,*,*,*,*,59)";

这是我们的文化背景...

查询中的这个bean没有被取消引用,我们正在获取这些对象的gbs。

enter code here

 
  private static final String HOURLY_STATEMENT =
      "context HourlyRollup "
          + "select count(*) as xcount,hourlyFloor(min(from_time)),a,b,c,d,e,f,"
          + "g,h,sum(h),sum(i),j,k,l,"
          + "m,n,y,o,p,q,r "
          + "from io.common.Bean where Dir in (-5,-3,0,1) "
          + "group by a,b,c,d,e,f,g,Direction,h,"
          + "i,j,k,l,m,l,n,o,p output all "
          + "when terminated order by a,b,c,Dir,d,e";
  private static final int HOURLY = RollupPeriod.HOURLY.ordinal();

1 个答案:

答案 0 :(得分:0)

当选择子句选择group-by子句中未包含的每个事件的属性时,这意味着Esper不能忘记事件本身,并一直保留事件,直到需要输出和终止为止。
这类查询为http://esper.espertech.com/release-8.2.0/reference-esper/html_single/index.html#processingmodel_aggregation_batch_group_agg

当选择子句仅具有聚合的属性以及出现在group-by子句中的未聚合的属性时,这意味着Esper可以忘记该事件,而是保留聚合的值。 这类查询为http://esper.espertech.com/release-8.2.0/reference-esper/html_single/index.html#processingmodel_aggregation_batch_full_agg

因此...请检查select子句中的表达式,并确保事件属性位于group-by子句中,或已全部聚合,例如“ last(r)”或“ first(r)”或相似。