Javascript / Node.js에서 큰 (5-10Gb) 로그 파일을 파싱해야합니다 (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
다음 큐브로이 데이터 (펌프) https://github.com/square/cube를 자신의 JS 클라이언트를 사용하여).
첫째, 노드에서 파일을 한 줄씩 읽는 표준 방법은 무엇입니까?
온라인에서 매우 일반적인 질문 인 것 같습니다.
- 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-reader
- https://github.com/jahewson/node-byline
- https://github.com/pkrumins/node-lazy
- https://github.com/Gagle/Node-BufferedReader
그러나 이것은 매우 기본적인 작업처럼 보입니다. 확실히 stdlib 내에 텍스트 파일을 한 줄씩 읽는 간단한 방법이 있습니까?
둘째, 그런 다음 각 줄을 처리해야합니다 (예 : 타임 스탬프를 Date 객체로 변환하고 유용한 필드 추출).
처리량을 최대화하는 가장 좋은 방법은 무엇입니까? 각 줄을 읽거나 큐브로 보내는 것을 차단하지 않는 방법이 있습니까?
셋째-문자열 분할을 사용하여 추측하고 있으며 JS에 해당하는 contains (IndexOf! = -1?)가 정규식보다 훨씬 빠를 것입니까? Node.js에서 방대한 양의 텍스트 데이터를 파싱 한 경험이있는 사람이 있습니까?
건배, 빅터