我有一个结构如下的数据集:
[TIMESTAMP] FIXED POSITION DATA STRING
[TIMESTAMP] FIXED POSITION DATA STRING
[TIMESTAMP] tag1=9324, tag2=19, tag3=55, etc
[TIMESTAMP] FIXED POSITION DATA STRING
这两种类型的记录混合在一起,基于标签的字段定期包含汇总数据。对于单个文件,这些数据文件可以大到 1000 万行。此外,一些固定位置的行可能有几千字节长 - 在我处理它们时会导致内存管理问题。
我需要从头开始处理文件,当我点击摘要条目时对每个条目进行分组,并记录这些摘要条目以及来自固定位置条目的某些字段的聚合。具体来说,固定位置段的一个特定部分包含一个 4 位的状态码。我需要将该数据添加到摘要记录中 - 自上次摘要记录以来出现的每个摘要代码的出现次数。每个摘要条目,包括汇总数据和时间戳的字段,都应转换为 CSV 中的一行。
我目前仅使用 ruby 代码/标准库来执行此操作。对于较小的数据集,这很好,但对于较大的数据集,性能会迅速下降。在我看来,这似乎是一个常见的 ETL 类型问题。稍后我将对这些数据进行更复杂类型的操作,并且似乎会不断地重新访问这些日志文件以对它们进行更复杂的报告。
是否有现有的 ETL 工具或库(首选 Ruby)
- 高性能混合(正则表达式/固定位置)提取是否良好。
- 很容易学习。
- 抽象出内存管理。
- 是免费/开源或低成本(低于 200 美元)商业的。
我愿意接受关于使用什么来解决这个问题的替代建议——我只是在寻找比原始标准库 ruby 代码更好的解决方案。