Format Atlas

비교

JSON Lines와 Avro

JSON Lines는 UTF-8 한 줄마다 JSON 값 하나를 저장해 레코드별 처리가 쉽습니다. Avro는 작성자 스키마에 따라 형식이 지정된 레코드를 인코딩하고 컨테이너 파일에 스키마 메타데이터와 블록을 담을 수 있습니다.

어떤 형식을 선택해야 할까요?

읽기 쉬운 이벤트와 텍스트 도구, 줄 단위 스트리밍에는 JSON Lines를 고려하세요. 형식이 있는 레코드와 관리되는 스키마 해석에는 Avro를 검토하세요.

적합한 경우 JSON Lines

줄 단위로 처리하는 로그와 기록 · JSON 레코드의 스트리밍 교환

  • 레코드를 하나씩 읽고 쓰기
  • 일반 텍스트 도구로 데이터를 추가하거나 합치기

적합한 경우 Avro

정의된 스키마로 레코드 교환

  • 스키마 버전을 관리하는 이벤트와 데이터 파이프라인

기본 정보

항목JSON LinesAvro
확장자.jsonl, .ndjson.avro
MIME 유형application/jsonlapplication/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 규칙을 따릅니다.

자세히 보기

참고 자료 및 사양