Skip to main content

설명

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

데이터 타입 매핑

아래 표에는 Apache Avro 포맷이 지원하는 모든 데이터 타입과 INSERTSELECT 쿼리에서 각각에 대응하는 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_codecoutput_format_avro_sync_interval 설정으로 구성할 수 있습니다.

Avro 스키마 추론

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