데이터 전처리: 데이터 포맷 – Avro

ㅁ 데이터 포맷

1. Avro

ㅇ 정의:
Apache Hadoop 생태계에서 주로 사용되는 데이터 직렬화 프레임워크로, JSON 기반 스키마를 사용하여 데이터를 이진 포맷으로 저장 및 전송하는 기술.

ㅇ 특징:
– 스키마(JSON)와 데이터가 분리되어 관리됨
– 이진 포맷으로 저장되어 용량 효율성과 처리 속도가 높음
– 다양한 프로그래밍 언어(Java, Python 등)와 호환
– 스키마 진화(필드 추가/삭제) 지원

ㅇ 적합한 경우:
– 대규모 데이터셋을 네트워크로 전송하거나 저장 공간을 절약해야 하는 경우
– 스키마 변경 가능성이 있는 장기 운영 시스템
– Hadoop, Kafka 등 분산 처리 환경에서 데이터 교환이 필요한 경우

ㅇ 시험 함정:
– Avro는 JSON 포맷과 혼동하기 쉬우나, 실제 데이터 저장은 JSON이 아닌 이진 포맷임
– 스키마가 데이터 파일에 항상 포함된다고 오해할 수 있으나, 경우에 따라 별도 관리 가능
– Parquet, ORC와 비교 시 컬럼 지향이 아닌 로우 지향 포맷임

ㅇ 시험 대비 “패턴 보기” 예시:
O: “Avro는 JSON 스키마를 기반으로 하며, 데이터는 이진 포맷으로 저장된다.”
O: “Avro는 스키마 진화를 지원하여 필드 추가나 삭제가 가능하다.”
X: “Avro는 컬럼 지향 저장 포맷이다.”
X: “Avro 데이터는 항상 JSON 텍스트로 저장된다.”

ㅁ 추가 학습 내용

Avro 데이터 파일 구조는 헤더와 데이터 블록으로 구성된다. 헤더에는 메타데이터와 스키마 정보가 포함되어 있으며, 데이터 블록에는 실제 레코드 데이터가 저장된다.

스키마 진화 시 호환성 규칙은 크게 세 가지로 구분된다.
Backward compatibility는 새로운 스키마로 기존 데이터를 읽을 수 있는 경우를 의미한다.
Forward compatibility는 기존 스키마로 새로운 데이터를 읽을 수 있는 경우를 의미한다.
Full compatibility는 양방향 호환이 모두 가능한 경우를 말한다.

Avro, Parquet, ORC는 저장 구조와 성능 특성에서 차이가 있다. Avro는 로우 기반 저장 형식으로 직렬화와 전송에 유리하며, Parquet와 ORC는 컬럼 기반 저장 형식으로 분석 쿼리 성능과 압축 효율이 높다. Parquet는 범용성과 다양한 분석 엔진 지원이 강점이고, ORC는 Hive 환경에서의 최적화와 높은 압축률이 장점이다.

Kafka에서 Avro는 Schema Registry와 함께 사용되어 스키마 버전 관리와 호환성 검증을 지원한다. 이를 통해 데이터 생산자와 소비자 간의 스키마 불일치를 방지할 수 있다.

Avro에서 동적 타입 처리는 Union 타입을 사용하며, Nullable 필드는 [“null”, “type”] 형태로 정의하고 기본값을 null로 설정하여 표현한다.

Avro RPC(Remote Procedure Call)는 Avro 프로토콜을 기반으로 원격 메서드 호출을 지원하며, 분산 환경에서 서비스 간 통신에 활용될 수 있다.

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*