2017-09-19 1 views
1

CEPH 저장소에 avro 메시지가 포함 된 항목의 내용을 작성하기위한 사용자 지정 싱크 커넥터를 작성하고 있습니다.카프카 커넥트 스키마의 추론은 무엇입니까?

이 작업을 수행하기 위해 Kafka Connect 스키마가있는 SinkRecord가 제공됩니다.이 스키마는 Avro 스키마의 매핑 된 버전입니다. 우리는 CEPH에 avro를 작성하려고하기 때문에 connect API 메소드를 사용하여 Connect 스키마를 다시 Avro로 변환합니다. 왜 우리는 이것을해야합니까? Kafka Connect Schema를 도입하고보다 일반적으로 채택 된 Avro 스키마를 사용하지 않으면 어떤 이점이 있습니까?

FYI : Avro 노조에 몇 가지 문제가 있기 때문에이 질문을드립니다. Kafka Connect Schema와의 매핑에는 여전히 문제가 있습니다. https://github.com/confluentinc/schema-registry/commit/31648f0d34b10c1b36e8ec6f4c1236ed3fe86495#diff-0a8d4f17f8d4a68f2f0d2dcd9211df84

답변

2

Kafka Connect는 커넥터가 메시지가 카프카에서 어떻게 직렬화되는지에 대한 지식으로부터 커넥터를 분리하기 때문에 자체 스키마 구조를 정의합니다. 이렇게하면 모든 변환기에서 모든 커넥터를 사용할 수 있습니다. 이러한 분리가 없다면 커넥터는 메시지를 특정 형식으로 직렬화하여 재사용하기가 더 어려워 질 것으로 기대합니다.

모든 메시지가 특정 Avro 스키마로 serialize 된 경우 싱크 커넥터가 항상 키와 값으로 ByteArrayConverter을 사용하도록 구성 할 수 있으며 커넥터는 직렬화 된 형식의 메시지를 처리 ​​할 수 ​​있습니다.

그러나 메시지가 Confluents Avro 시리얼 라이저 (또는 소스 커넥터의 Avro 변환기)를 사용하여 직렬화되는 경우 키와 값의 이진 형식에는 마술 바이트와 Avro 스키마 식별자가 선행 바이트에 포함됩니다 (에스). 바이트 배열의 나머지 내용은 Avro 직렬화 형식입니다.

관련 문제