Разбор огромных лог-файлов в Node.js - построчно
Мне нужно сделать несколько больших (5-10 Гб) лог-файлов в Javascript / Node.js (я использую 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
а такжеSUCCESS
), затем закачайте эти данные в Cube (https://github.com/square/cube) используя свой клиент JS.
Во-первых, что такое канонический способ чтения в файле построчно в Node?
Кажется, это довольно распространенный вопрос в Интернете:
http://www.quora.com/What-is-the-best-way-to-read-a-file-line-by-line-in-node-jsЧитать файл по одной строке в node.js?Многие ответы, кажется, указывают на кучу сторонних модулей:
https://github.com/nickewing/line-readerhttps://github.com/jahewson/node-bylinehttps://github.com/pkrumins/node-lazyhttps://github.com/Gagle/Node-BufferedReaderТем не менее, это кажется довольно простой задачей - конечно, в stdlib есть простой способ читать текстовый файл построчно?
Во-вторых, мне нужно обработать каждую строку (например, преобразовать метку времени в объект Date и извлечь полезные поля).
Какой лучший способ сделать это, максимизируя пропускную способность? Есть ли способ, который не заблокирует ни чтение в каждой строке, ни отправку его в Cube?
В-третьих, я предполагаю, что используется разбиение строк, и JS-эквивалент содержит (IndexOf! = -1?) Будет намного быстрее, чем регулярные выражения? У кого-нибудь был большой опыт разбора огромных объемов текстовых данных в Node.js?
Ура, Виктор