为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测交错日志文件中的序列

如何检测交错日志文件中的序列

狐的传说 2023-05-23 16:43:25
我想匹配给定模式库中的模式,返回检测到的最长模式。但是,我在日志文件中只有多个并行任务的交错结果,例如来自处理器的多个内核。这是数据挖掘中的已知应用程序吗?我想到了一种与Regex subsequence matching相似的 regex 解决方案。然而,有一种距离度量允许一些模糊性会很好,例如,如果序列中的一个活动会丢失。
查看完整描述

3 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

正如其他人所指出的那样,如果我们了解您要完成的任务的语义,将会有所帮助。我在这里猜测你的模式库中的模式都属于

  • 单个资源(或)

  • 一组资源

如果是这种情况,我建议您首先将该信息添加到您的模式库中以使其明确。例如,您的模式库看起来像:

1: A

1: AB

1: ABC

2: AD

2: C

2: D

如果你想涵盖一组资源的模式,它可能看起来像这个人为的例子:


3: X

4: Y

3,4: Z

现在,您可以从交错日志文件中分离出属于每个资源的日志记录(假设日志文件确实具有资源标识符)。然后,您可以应用模式匹配来发现最长的模式。


本质上,将您的关注点分开并为每个子问题应用解决方案。


查看完整回答
反对 回复 2023-05-23
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

如果我们有日志文件和模式库,我们可以用堆栈解决问题。我们开始从日志文件中读取。如果带有堆栈的新日志在模式库中创建了一个现有模式,我们将其推入堆栈。除非,我们把它放在一个新的堆栈中。



查看完整回答
反对 回复 2023-05-23
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您的问题很容易描述,如果我们知道您的约束条件就好了。这需要运行多快?

在 Python 中,您将在资源上有一个迭代器,将每个资源推送到一个单独的生成器来进行模式匹配。也就是说,迭代器产生(resource 1, A)并被推入资源 1 的生成器,以查看它是否与模式匹配。生成器偶尔会踢出匹配的模式。

实际上,您可能只需要一个 Splunk 插件或将所有内容都放入数据库中。这种类型的分析用于常见问题,例如“查找您在过去两周内有过 3 次会话但放弃了购物车且购物车中有一个常见商品超过总数 75% 的所有客户。向这个犹豫不决的客户发送一个5% 折扣,24 小时有效。”


查看完整回答
反对 回复 2023-05-23
  • 3 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信