Javascript/Node.js (私は Cube を使用しています) で大きな (5 ~ 10 Gb) ログファイルの解析を行う必要があります。
ログラインは次のようになります。
10:00:43.343423 I'm a friendly log message. There are 5 cats, and 7 dogs. We are in state "SUCCESS".
各行を読み取り、いくつかの解析を行い (例:と を取り除く) 5
、JS クライアントを使用してこのデータを Cube ( https://github.com/square/cube )に送り込む必要があります。7
SUCCESS
まず、Nodeでファイルを1行ずつ読み取る標準的な方法は何ですか?
オンラインでかなり一般的な質問のようです:
- http://www.quora.com/What-is-the-best-way-to-read-a-file-line-by-line-in-node-js
- node.jsで一度に1行ずつファイルを読みますか?
多くの回答は、一連のサードパーティ モジュールを指しているようです。
- https://github.com/nickewing/line-reader
- https://github.com/jahewson/node-byline
- https://github.com/pkrumins/node-lazy
- https://github.com/Gagle/Node-BufferedReader
ただし、これはかなり基本的なタスクのように思えます-確かに、標準ライブラリ内にテキストファイルを1行ずつ読み取る簡単な方法がありますか?
次に、各行を処理する必要があります (たとえば、タイムスタンプを Date オブジェクトに変換し、有用なフィールドを抽出します)。
スループットを最大化して、これを行う最善の方法は何ですか? 各行の読み取り、またはキューブへの送信のいずれかでブロックされない方法はありますか?
第三に、文字列分割を使用していると推測しています.JSのcontains (IndexOf != -1?) に相当するものは、正規表現よりもはるかに高速になりますか? Node.js で大量のテキスト データを解析した経験のある人はいますか?
乾杯、ビクター