我需要在Javascript/Node中对大型(5-10GB)日志(log)文件进行一些解析.js(我正在使用Cube).
日志(log)线看起来像:
10:00:43.343423 I'm a friendly log message. There are 5 cats, and 7 dogs. We are in state "SUCCESS".
我们需要读取每一行,进行一些解析(例如,go 掉5
、7
和SUCCESS
),然后使用JS客户端将这些数据泵入多维数据集(https://github.com/square/cube).
首先, node 中逐行读取文件的规范方式是什么?
在网上,这似乎是一个相当常见的问题:
- http://www.quora.com/What-is-the-best-way-to-read-a-file-line-by-line-in-node-js
- Read a file one line at a time in node.js?
很多答案似乎都指向一堆第三方模块:
- https://github.com/nickewing/line-reader
- https://github.com/jahewson/node-byline
- https://github.com/pkrumins/node-lazy
- https://github.com/Gagle/Node-BufferedReader
然而,这似乎是一项相当基本的任务——当然,在stdlib中有一种简单的方法可以逐行读取文本文件?
其次,我需要处理每一行(例如,将时间戳转换为日期对象,并提取有用的字段).
实现这一点的最佳方法是什么,最大限度地提高吞吐量?有没有一种方法不会阻碍每一行的读取,或者将其发送到多维数据集?
第三,我猜是使用字符串拆分,以及JS等价的contains(IndexOf!=-1?)会比正则表达式快很多吗?任何人都有在Node中解析大量文本数据的经验.js?
干杯