비교
JSON Lines와 Avro
JSON Lines는 UTF-8 한 줄마다 JSON 값 하나를 저장해 레코드별 처리가 쉽습니다. Avro는 작성자 스키마에 따라 형식이 지정된 레코드를 인코딩하고 컨테이너 파일에 스키마 메타데이터와 블록을 담을 수 있습니다.
어떤 형식을 선택해야 할까요?
읽기 쉬운 이벤트와 텍스트 도구, 줄 단위 스트리밍에는 JSON Lines를 고려하세요. 형식이 있는 레코드와 관리되는 스키마 해석에는 Avro를 검토하세요.
적합한 경우 JSON Lines
줄 단위로 처리하는 로그와 기록 · JSON 레코드의 스트리밍 교환
- 레코드를 하나씩 읽고 쓰기
- 일반 텍스트 도구로 데이터를 추가하거나 합치기
적합한 경우 Avro
정의된 스키마로 레코드 교환
- 스키마 버전을 관리하는 이벤트와 데이터 파이프라인
기본 정보
| 항목 | JSON Lines | Avro |
|---|---|---|
| 확장자 | .jsonl, .ndjson | .avro |
| MIME 유형 | application/jsonl | application/avro |
| 주요 용도 | 줄 단위로 처리하는 로그와 기록 · JSON 레코드의 스트리밍 교환 | 정의된 스키마로 레코드 교환 |
| 여는 방법 | 텍스트 편집기나 JSON Lines 지원 도구로 엽니다. 각 줄을 JSON으로 검증하면 구문 오류가 있는 레코드를 찾기 쉽습니다. | Avro 지원 도구로 스키마, 필드, 형식 및 레코드를 확인하세요. |
| 내보내기 또는 변환 | JSON 배열로 바꿀 때는 각 줄을 배열 요소로 모읍니다. 배열에서 JSON Lines로 바꿀 때는 값을 한 줄씩 기록합니다. 큰 파일은 변환 중 메모리 사용량을 고려하세요. | JSON이나 Parquet으로 변환할 때 필드명, 형식, null, 논리 유형, 레코드 수 및 스키마 호환성을 확인하세요. |
용도별 선택
레코드를 하나씩 읽고 쓰기
줄 단위로 처리하는 로그와 기록 · JSON 레코드의 스트리밍 교환
JSON Lines일반 텍스트 도구로 데이터를 추가하거나 합치기
줄 단위로 처리하는 로그와 기록 · JSON 레코드의 스트리밍 교환
JSON Lines스키마 버전을 관리하는 이벤트와 데이터 파이프라인
정의된 스키마로 레코드 교환
Avro핵심 사항 1
JSON Lines 리더는 별도 스키마 없이 각 JSON 값을 읽지만 Avro 바이너리 리더는 작성자 스키마가 필요합니다.
차이 자세히 보기핵심 사항 2
완전한 JSON Lines 추가는 텍스트 작업입니다. Avro 컨테이너 작성기는 데이터 블록과 동기화 표식을 유효하게 유지해야 합니다.
차이 자세히 보기차이 자세히 보기
실제 데이터와 독자로 측정하세요. 항상 더 작거나 빠른 형식은 없습니다.
- JSON Lines는 줄마다 독립 JSON 값을 두고 Avro 레코드는 선언된 스키마를 따릅니다.
- Avro 컨테이너 파일은 작성자 스키마를 데이터 블록과 함께 저장하지만 JSON Lines는 UTF-8 텍스트입니다.
- Avro 독자는 지원되는 작성자/독자 스키마 변경을 해석할 수 있으며 JSON Lines의 필드 및 형식 규약은 애플리케이션이 정합니다.
자주 묻는 질문
JSON Lines는 Avro의 JSON 인코딩과 같나요?
아닙니다. JSON Lines는 일반 JSON 값을 줄로 나눕니다. Avro의 JSON 인코딩은 Avro 스키마와 union 규칙을 따릅니다.