我需要对 Javascript/Node.js 中的大型(5-10 Gb)日志文件进行一些解析(我正在使用 Cube)。
日志线看起来像:
10:00:43.343423 I'm a friendly log message. There are 5 cats, and 7 dogs. We are in state "SUCCESS".
我们需要读取每一行,进行一些解析(例如5
,剥离7
和),然后使用他们的 JS 客户端SUCCESS
将这些数据泵入 Cube(https://github.com/square/cube )。
首先,Node 中逐行读取文件的规范方式是什么?
这似乎是网上相当普遍的问题:
很多答案似乎都指向一堆第三方模块:
- https://github.com/nickewing/line-reader
- https://github.com/jahewson/node-byline
- https://github.com/pkrumins/node-lazy
- https://github.com/Gagle/Node-BufferedReader
然而,这似乎是一项相当基本的任务——当然,在标准库中有一种简单的方法可以逐行读取文本文件?
其次,我需要处理每一行(例如将时间戳转换为日期对象,并提取有用的字段)。
做到这一点的最佳方法是什么,最大限度地提高吞吐量?是否有某种方式不会阻止读取每一行或将其发送到 Cube?
第三 - 我猜测使用字符串拆分,JS 等价于 contains (IndexOf != -1?) 会比正则表达式快很多?有没有人在解析 Node.js 中的大量文本数据方面有丰富的经验?
干杯,维克多