首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为报告目的使用NEsper读取LogFiles

为报告目的使用NEsper读取LogFiles
EN

Stack Overflow用户
提问于 2018-08-16 09:30:39
回答 1查看 51关注 0票数 0

我们正在评估NEsper。我们的重点是监视企业环境中的数据质量。在应用程序中,我们将记录许多字段上的每个更改--例如,按“顺序”记录。所以我们有这样的字段

  • 收货人名称
  • 收货人街
  • 订单日期

....and有更多的字段。正如您可以想象的那样,日志文件将变得越来越大。

由于数据是由不同的客户发送并在应用程序中导入的,所以我们希望分析有多少字段(以及哪些字段)从“无值”更新到“值”(例如)。

我试图用字段构建一个测试用例。

  • 订单参考
  • 字段名
  • 场值

对于我的测试用例,我添加了两个带有上下文信息的语句。第一个应该只计算每个顺序的一般变化:

代码语言:javascript
复制
epService.EPAdministrator.CreateEPL("create context RefContext partition by Ref from LogEvent");
var userChanges = epService.EPAdministrator.CreateEPL("context RefContext select count(*) as x, context.key1 as Ref from LogEvent");

第二条语句应计数从“无值”到“值”的更新:

代码语言:javascript
复制
epService.EPAdministrator.CreateEPL("create context FieldAndRefContext partition by Ref,Fieldname from LogEvent");
var countOfDataInput = epService.EPAdministrator.CreateEPL("context FieldAndRefContext SELECT context.key1 as Ref, context.key2 as Fieldname,count(*) as x from pattern[every (a=LogEvent(Value = '') -> b=LogEvent(Value != ''))]");

要读取测试日志文件,我使用csvInputAdapter:

代码语言:javascript
复制
CSVInputAdapterSpec csvSpec = new CSVInputAdapterSpec(ais, "LogEvent");
csvInputAdapter = new CSVInputAdapter(epService.Container, epService, csvSpec);
csvInputAdapter.Start();

我不想使用更新侦听器,因为我只对所有事件的结果感兴趣(可能这是不可能的,这是我的失败)。

因此,在读取csv (csvInputAdapter.Start()返回)之后,我读取了所有事件,这些事件存储在NewEvents语句中。

使用CSV中的10个条目--可以正常工作。使用100万条线路,它需要从长到长。我尝试了没有EPL-语句(所以只是CSV导入)-它花了大约5秒。对于第一个语句(不是复杂的模式语句),我总是在20分钟后停止--所以我不知道需要多长时间。

然后,我更改了第一条语句的EPL :我通过上下文而不是上下文来介绍一个组。

代码语言:javascript
复制
select Ref,count(*) as x from LogEvent group by Ref

现在它真的很快-但我没有任何结果在我的NewEvents流后,CSVInputAdapter回来.

我的问题:

  1. 我想使用NEsper的方式是受支持的用例还是这是我失败的根本原因?
  2. 如果这是一个有效的用例:我的错误在哪里?我怎样才能以一种表演的方式得到我想要的结果?
  3. 为什么在我的EPL-语句中使用"group“而不是"context”时没有NewEvents?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-16 11:51:58

1),是的

这是有效的,您的EPL设计可能有点低效。您可能希望通过使用过滤器索引和索引条目来了解模式是如何工作的,它们的创建成本更高,但在丢弃不需要的事件时却非常快。阅读:filterindexessingle/index.html#pattern-walkthrough可能尝试“前面的”。分别衡量每个语句的性能。另外,我不认为CSV适配器是为处理大型文件而优化的。我认为CSV可能不会流动。

检查你的代码?不要将CSV文件用于大型文件。确保连接了侦听器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51873832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档