Window 将聚合结果保存在内存中
Window That Keeps Aggregated Results In Memory
我正在使用 siddhi v4.1.10 来创建长 运行ning java 独立应用程序,该应用程序将处理来自多个文件的数据,将其聚合并将结果发送到消息代理。每天大约会有 90 GB 的文件,其中包含 1.3 亿条记录(每分钟最多 100 000 个事件)。从文件 recod 创建的每个事件都有大约 30 个字段。
例如:
define stream FileStream (time double, user_ip string, status string, bytes int, http_method string, url string, duration int, ... .);
应用程序应该能够 运行 数百个查询 根据日志文件中的时间聚合 1 分钟、5 分钟、10 分钟批次的数据。
例如:
来自 FileStream#window.externalTimeBatch(时间,60 秒)
SELECT time, account_id, status_code, sum(bytes) AS bytes, count(requests) AS requests GROUP BY account_id, status_code, 时间插入rabbtmqstream
问题是批处理 window 将事件保存在内存中,直到时间结束。但我需要一个系统,它可以在一段时间内聚合事件,而不会在内存中保留任何事件。 siddhi有可能吗?
我考虑过 OutputRateLimiter 但无法扩展它。
请指教
使用 Siddhi 4.x 版本。当通过 timeBatch windows 完成聚合时,这不会存储事件 in-memory。在这种情况下,它只会将 运行 聚合值保留在内存中
或者,您也可以使用 aggregators 通过使用 in-memory 和数据库来聚合值。
我正在使用 siddhi v4.1.10 来创建长 运行ning java 独立应用程序,该应用程序将处理来自多个文件的数据,将其聚合并将结果发送到消息代理。每天大约会有 90 GB 的文件,其中包含 1.3 亿条记录(每分钟最多 100 000 个事件)。从文件 recod 创建的每个事件都有大约 30 个字段。
例如:
define stream FileStream (time double, user_ip string, status string, bytes int, http_method string, url string, duration int, ... .);
应用程序应该能够 运行 数百个查询 根据日志文件中的时间聚合 1 分钟、5 分钟、10 分钟批次的数据。
例如:
来自 FileStream#window.externalTimeBatch(时间,60 秒) SELECT time, account_id, status_code, sum(bytes) AS bytes, count(requests) AS requests GROUP BY account_id, status_code, 时间插入rabbtmqstream
问题是批处理 window 将事件保存在内存中,直到时间结束。但我需要一个系统,它可以在一段时间内聚合事件,而不会在内存中保留任何事件。 siddhi有可能吗? 我考虑过 OutputRateLimiter 但无法扩展它。 请指教
使用 Siddhi 4.x 版本。当通过 timeBatch windows 完成聚合时,这不会存储事件 in-memory。在这种情况下,它只会将 运行 聚合值保留在内存中
或者,您也可以使用 aggregators 通过使用 in-memory 和数据库来聚合值。