代码之家  ›  专栏  ›  技术社区  ›  Taras

在内存中保留聚合结果的窗口

  •  0
  • Taras  · 技术社区  · 8 年前

    我使用siddhi v4.1.10来创建长时间运行的java独立应用程序,该应用程序将处理来自多个文件的数据,聚合数据并将结果发送到message broker。大约有 每天90 GB的文件 拥有1.3亿条记录(每分钟多达10万个事件)。从文件recod创建的每个事件大约有30个字段。

    例如:

    定义流文件流(time-double、user\u-ip-string、status-string、bytes-int、http\u-method-string、url-string、duration-int等);

    应用程序应该能够运行 数百个查询 根据日志文件中的时间,将数据聚合为1min、5min、10min批次。

    例如:

    从FileStream#窗口。externalTimeBatch(时间,60秒) 选择时间、account\u id、status\u code、sum(bytes)AS bytes、count(requests)AS requests GROUP BY account\u id、status\u code、time insert into rabbtmqstream

    问题是批处理窗口会将事件保留在内存中,直到时间结束。但我需要一个系统,它可以在一段时间内聚合事件,而不在内存中保留任何事件。siddhi有可能吗? 我考虑过OutputTaleLimiter,但不可能扩展它。 请告知。

    1 回复  |  直到 8 年前
        1
  •  0
  •   suho    8 年前

    使用Siddhi 4。x版本。当通过进行聚合时,这不会将事件存储在内存中 timeBatch windows。在这种情况下,它将只在内存中保留正在运行的聚合值

    或者,您也可以使用 aggregators 使用内存和数据库中的来聚合值。

    推荐文章