본문 바로가기
Kafka

Kafka - Avro 포맷

by sinabeuro 2024. 11. 21.
728x90

Primitive Types

null: 값 없음
boolean: 이진 값
int: 32비트 부호 있는 정수
long: 64비트 부호 있는 정수
float: 단정밀도(32비트) IEEE 754 부동소수점 숫자
double: 배정밀도(64비트) IEEE 754 부동소수점 숫자
bytes: 8비트 부호 없는 바이트의 순서
string: 유니코드 문자 시퀀스

 

예시

avro type json type example
null null null
boolean boolean true
int,long integer 1
float,double number 1.1
bytes string "\u00FF"
string string "foo"
record object {"a": 1}
enum string "FOO"
array array [1]
map object {"a": 1}
fixed string "\u00ff"

 

 

{
  "type": "record",
  "name": "LongList",
  "aliases": ["LinkedLongs"],                      // old name for this
  "fields" : [
    {"name": "value", "type": "long"},             // each element has a long
    {"name": "next", "type": ["null", "LongList"]} // optional next element
  ]
}

 

 

 

 

스키마 자동 생성

 


 

• Json
• Avro
• Protobuf

Json/Avro 포맷의 경우 schema와 payload로 구성

Schema는 해당 레코드의 schema 구성을, payload는 해당 레코드의 값을 가짐.
Connector 별로 Json 포맷은 조금씩 다를수 있지만 전반적으로 대부분 비슷.
Json Schema의 경우 레코드 별로 Schema를 가 지고 있으므로 메시지 용량이 커짐. 
이의 개선을 위해 Avro Format과 Schema Registry를 이용하여 Schema 정보의 중복 생성 제거.

 


 

 

참고자료

 

json 포맷 vs Avro 포맷 비교

https://www.confluent.io/blog/schemas-contracts-compatibility/

 

Avro 포맷

https://avro.apache.org/docs/1.11.1/specification/_print/

 

Specification

 

avro.apache.org

 

AWS Glue - schema registery

https://docs.aws.amazon.com/ko_kr/glue/latest/dg/schema-registry-gs.html

 

Schema Registry 시작하기 - AWS Glue

전제 조건: 다음 단계를 완료하기 전에 Amazon Managed Streaming for Apache Kafka(Amazon MSK) 또는 Apache Kafka 클러스터가 실행 중이어야 합니다. 생산자와 소비자는 Java 8 이상에서 실행 중이어야 합니다.

docs.aws.amazon.com

 

 

kafka connect 프로퍼티 정리

https://godekdls.github.io/Apache%20Kafka/kafka-connect/

 

Kafka Connect

카프카 커넥트 프레임워크 한글 번역. 워커, 싱크/소스 커넥터, 싱크/소스 태스크에 대한 개념을 소개하고 커넥트를 개발하는 방법을 안내합니다.

godekdls.github.io

 

avro 변환 

https://konbert.com 

 

Convert Files, Databases and Data Online - Konbert

Unfortunately, we don't have any language specific SDKs yet, so you'll have to use a standard HTTP client for it.

konbert.com

 

 

aws glue git

https://github.com/awslabs/aws-glue-schema-registry/blob/master/integration-tests/kafka-connect-avro-configs/file-sink-standalone.properties

 

 

https://github.com/awslabs/aws-glue-schema-registry/blob/master/README.md

 

 

https://p-bear.tistory.com/48

 

Apache Avro 란

Avro Avro 란 Avro란 Apache에서 만든 프레임워크로 데이터 직렬화 기능을 제공한다. JSON과 비슷한 형식이지만, 스키마가 존재한다. Avro = schema + binary(json value) 장단점 장점 단점 스키마를 통해 데이터

p-bear.tistory.com

 

https://louisdev.tistory.com/63

 

[Apache Avro] Avro 구조와 사용법

Apache Avro는 serialization library이다. Avro 특징 특징 json 형식으로 스키마를 지정하고 이 스키마 파일을 통해 serialize/deserialize 를 진행한다. java의 경우 플러그인을 통해 json 타입의 avro 스키마 파일을

louisdev.tistory.com

 

728x90

'Kafka' 카테고리의 다른 글

Kafka - Kafka Connect 개요  (1) 2024.11.26
Kafka - consumer 구현체 비교  (0) 2024.11.26
Kafka - Kafka Producing 성능 비교와 멱등성 조건  (0) 2024.06.02
MSK Cluster 간단 소개  (0) 2024.02.21
kafka - Datadog Metrics Sink Connector  (0) 2023.08.10

댓글