Avro 개요
- Development/Hadoop, NoSQL, BigData
- 2021. 4. 23.
Avro란?
Avro는 데이터 직렬화와 관련된 시스템이다. 한국 개발자들은 /에이브로/라고 발음하곤 하지만, 외국 개발자 커뮤니티에서는 주로 /아브로/라고 발음하고 있다. Avro는 JSON 형태로 기록한다. 따라서, Avro는 스키마를 표현하는 JSON이라 생각할 수 있다.
Avro의 장단점
- 장점
- 데이터의 타입을 알 수 있다.
- 데이터가 압축되어 효율성이 높다.
- 스키마에 설명을 포함하여 구조를 이해하는데 도움을 줄 수 있다.
- 데이터를 여러 언어로 액세스할 수 있다.
- 향후 스키마 변경에 유연하게 대응할 수 있다. (schema evolution)
- Hadoop 계열과 궁합이 좋다.
- Confluent Schema Registry에 쓸 수 있다. (유일)
- 단점
- 바이너리 형태로 직렬화(serialize) 되므로 JSON을 직접 쓸 때와 비교했을 때 대비 데이터를 쉽게 들여다 보기 어렵다. (디버깅하거나, 개발할 때 불편함 증가)
Avro Data Type 상세
표기할 수 있는 데이터형(data type)은 아래와 같이 세분화할 수 있다.
Primitive Data Type
Avro의 Primitive Data Type은 다음과 같다.
- null: no value
- boolean: binary value
- int: 32bit signed integer
- long: 64bit signed intteger
- float
- double
- bytes: 8bits unsigned
- string
{"type": "string"}
{"type": "int"}
{"type": "boolean"}
{"type": "long"}
Complex Data Type
Avro의 Complex Data Type은 다음과 같다.
- Record
- name: 스키마 이름
- namespace: 패키지
- doc: 스키마 설명/문서
- aliases: 별칭
- fields
- name: 필드명
- doc: 필드 설명
- type: 필드의 데이터형 (data type)
- default: 기본 값
{
"type": "record",
"name": "Students",
"fields": [
{"name": "id", "type": "long"},
{"name": "name", "type": "string"},
{"name": "majors", "type": "array", "values": "string"},
{"name": "phone", "type": "string"}
]
}
- Enum: 한 번 설정하면 바꾸지 말자. 장애난다.
{"type": "enum", "name":"colors", "symbols":["RED", "BLUE", "GREEN"]}
- Array
{"type":"array", "items":"string"}
- Map: 키는 string이다. value의 타입을 지정한다.
{"type":"map", "values":"string"}
- Union: string, int, boolean 등과 같은 여러 개의 서로 다른 타입을 수용할 수 있게 함, 선택적인 값을 저장하도록 하는 용도
참고
공식 홈페이지: https://avro.apache.org/
'Development > Hadoop, NoSQL, BigData' 카테고리의 다른 글
Redis 자료 구조 - List (0) | 2021.05.10 |
---|---|
Redis 자료 구조 - String (0) | 2021.05.06 |
Memcached vs. Redis - 특징 비교 (0) | 2021.05.03 |
Redis 개요 (0) | 2021.04.28 |
Redis 설치 방법 세 가지 (0) | 2021.04.21 |
Docker기반 Spark Cluster 설치하기 (6) | 2020.12.15 |
Local AirFlow 설치하기 (0) | 2020.12.09 |
brew로 local zeppelin 설치하기 (0) | 2020.11.30 |