Skip to main content

설명

Apache Avro는 효율적인 데이터 처리를 위해 바이너리 인코딩을 사용하는 행 지향 직렬화 포맷입니다. Avro 포맷은 Avro data files의 읽기와 쓰기를 지원합니다. 이 포맷은 스키마가 내장된 자체 기술형 메시지를 사용한다고 가정합니다. 스키마 레지스트리와 함께 Avro를 사용하는 경우 AvroConfluent 포맷을 참고하십시오.

데이터 타입 매핑

아래 표에는 Apache Avro 포맷이 지원하는 모든 데이터 타입과 INSERT 및 SELECT 쿼리에서 각각에 대응하는 ClickHouse 데이터 타입이 나와 있습니다. ** Variant 타입은 필드 값으로 null을 암묵적으로 허용하므로, 예를 들어 Avro union(T1, T2, null)은 Variant(T1, T2)로 변환됩니다. 따라서 ClickHouse에서 Avro를 생성할 때는 스키마 추론 과정에서 실제로 어떤 값이 null인지 알 수 없으므로, Avro union 타입 집합에 항상 null 타입을 포함해야 합니다. *** Avro 논리 타입 지원되지 않는 Avro 논리 데이터 타입:
  • time-millis
  • time-micros
  • duration

포맷 설정

예시

Avro 데이터 읽기

Avro 파일의 데이터를 ClickHouse 테이블로 가져오려면:
수집된 Avro 파일의 루트 스키마는 반드시 record 타입이어야 합니다. 테이블 컬럼과 Avro 스키마 필드 간의 대응 관계를 찾기 위해 ClickHouse는 이름을 비교합니다. 이 비교는 대소문자를 구분하며, 사용되지 않는 필드는 건너뜁니다. ClickHouse 테이블 컬럼의 데이터 타입은 삽입되는 Avro 데이터의 해당 필드와 다를 수 있습니다. 데이터를 삽입할 때 ClickHouse는 위 표에 따라 데이터 타입을 해석한 다음, 데이터를 해당 컬럼 타입으로 캐스팅합니다. 데이터를 가져오는 중 스키마에서 필드를 찾을 수 없고 설정 input_format_avro_allow_missing_fields가 활성화되어 있으면, 오류를 발생시키는 대신 기본값이 사용됩니다.

Avro 파일에 데이터 쓰기

ClickHouse 테이블의 데이터를 Avro 파일에 쓰려면 다음과 같이 하십시오:
컬럼 이름은 다음 조건을 충족해야 합니다:
  • [A-Za-z_]로 시작해야 합니다
  • 뒤에는 [A-Za-z0-9_]만 사용할 수 있습니다
Avro 파일의 출력 압축 및 동기화 인터벌은 각각 output_format_avro_codec 및 output_format_avro_sync_interval 설정으로 구성할 수 있습니다.

Avro 스키마 추론

ClickHouse DESCRIBE 함수를 사용하면 다음 예시처럼 Avro 파일에서 추론된 포맷을 빠르게 확인할 수 있습니다. 이 예시에는 ClickHouse S3 공개 버킷에서 공개적으로 접근할 수 있는 Avro 파일의 URL이 포함되어 있습니다.
마지막 수정일 2026년 8월 14일