Avro 개요

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/

 

Welcome to Apache Avro!

Welcome to Apache Avro! Apache Avro™ is a data serialization system. To learn more about Avro, please read the current documenta

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

Designed by JB FACTORY