Javascript / Node.js'de büyük (5-10 Gb) günlük dosyalarının bazılarını ayrıştırmam gerekiyor (Cube kullanıyorum).
Logline şuna benzer:
10:00:43.343423 I'm a friendly log message. There are 5 cats, and 7 dogs. We are in state "SUCCESS".
Biz (örn çıkarmaz bazı ayrıştırma yapmak, her satır okumak gerekir 5
, 7
ve SUCCESS
sonra Küp içine bu verileri (pompa) https://github.com/square/cube onların JS istemcisi kullanarak).
İlk olarak, Node'da bir dosyada satır satır okumanın kurallı yolu nedir?
İnternette oldukça yaygın bir soru gibi görünüyor:
- http://www.quora.com/What-is-the-best-way-to-read-a-file-line-by-line-in-node-js
- Bir dosyayı node.js'de her seferinde bir satır okur musunuz?
Yanıtların çoğu, bir grup üçüncü taraf modülüne işaret ediyor gibi görünüyor:
- https://github.com/nickewing/line-reader
- https://github.com/jahewson/node-byline
- https://github.com/pkrumins/node-lazy
- https://github.com/Gagle/Node-BufferedReader
Bununla birlikte, bu oldukça basit bir görev gibi görünüyor - elbette, stdlib içinde bir metin dosyasını satır satır okumak için basit bir yol var?
İkinci olarak, daha sonra her satırı işlemem gerekiyor (örneğin, zaman damgasını bir Tarih nesnesine dönüştürmek ve yararlı alanları ayıklamak).
Verimi en üst düzeye çıkararak bunu yapmanın en iyi yolu nedir? Her satırı okumayı veya Cube'a göndermeyi engellemeyen bir yol var mı?
Üçüncüsü - dize bölmeleri kullandığımı tahmin ediyorum ve contains'un JS eşdeğeri (IndexOf! = -1?) Normal ifadelerden çok daha hızlı olacak Node.js'de büyük miktarda metin verisini ayrıştırma konusunda çok tecrübesi olan var mı?
Şerefe, Victor