스트림, log, ML 데이터셋 포맷
JSON Lines (가끔 NDJSON — newline-delimited JSON, 같은 거) 가 각 줄이 한 독립 JSON 값인 파일 포맷. 감싸는 배열 없음, 레코드 사이 콤마 없음, 최상위 구조 없음. 파일 확장자는 .jsonl 또는 .ndjson.
JSON 이 못 푸는 거 푸는 거
- 스트리밍 — 한 줄 추가로 레코드 추가 가능. 일반 JSON 배열로는 매 추가마다 닫는 대괄호 다시 써야.
- 부분 읽기 — 전체 파일 안 로드하고 한 번에 한 레코드 처리. log 파일과 큰 데이터셋에 중요.
- 쉬운 concat / split —
cat a.jsonl b.jsonl가 합집합;split -l 1000 huge.jsonl이 chunk 로 분할. 둘 다 작동, 각 줄이 self-contained 라. - grep 친화적 —
grep error events.jsonl가 파싱 없이 매칭 줄 찾음.
JSON Lines 만나는 곳
- 애플리케이션 log 파일 (
papertrail,vector.dev,fluentd). - ML 학습 데이터 (HuggingFace 데이터셋, OpenAI fine-tuning, instruction tuning).
- 데이터베이스 export (MongoDB
mongoexport, Firestore export). - 라이브 event tail.
원칙: 데이터가 레코드의 시퀀스 (log event, 학습 샘플, 시계열 행) 일 때 최상위 배열 아닌 JSONL 잡아. Append-only 가 저렴, 파싱이 record-at-a-time, 파일이 파서 안 깨고 GB 까지 scale.