Разбор огромных лог-файлов в Node.js - построчно
Мне нужно сделать несколько больших (5-10 ГБ) файлов журналов в Javascript / Node.js (ям с использованием куба).
Логлайн выглядит примерно так:
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?
Ура, Виктор