我已经分隔了日志文件,这些文件每 5 分钟捕获一次某些进程的快照。我想对它们进行一些统计分析,对数据的子集进行分组和绘制图表等。其中一部分将涉及计算进程打开的时间(即总分钟数 = 它在 x 5 中的快照显示方式)。我可以使用 Python、R 或任何我选择的语言。
挑战在于没有一个字段是唯一的(存在一对多和多对多关系),因此唯一的匹配是当整行上的每个元素都相同时。
也许一个例子会有所帮助。假设第一个快照日志如下所示:
R123,M,5,... <-- line A
R190,Z,4,...
R663,M,8,...
然后 5 分钟后,下一个快照显示:
R123,M,5,... <-- line A
R123,P,3,... <-- line B
R955,Z,3,...
显然,A 行中的过程现在至少已经存在了 5 分钟。但是即使 B 行具有相同的第一个字段,其他字段也不匹配,因此它不是同一个过程。
我只是想找出一个好的数据模型,使这些数据易于使用。
一种选择是简单的频率计数:将每一整行读入 Python dict 或 Perl 哈希,并以该行作为键,这样当重复行出现在下一个快照中时,它只会添加到计数中。例如在 Perl 中:$count{$_}++ foreach @lines;
但是一整行数据甚至可以作为字典键有效吗?那么不连续的实例呢,比如如果 A 行连续出现 3 个快照,然后另一天再次出现?--这些应该是单独的实例,以便基于时间的查询仍然有效。
关于如何处理和存储这些数据的任何建议?