설명
Avro 포맷은 Avro data files의 읽기와 쓰기를 지원합니다. 이 포맷은 스키마가 내장된 자체 기술형 메시지를 사용한다고 가정합니다. 스키마 레지스트리와 함께 Avro를 사용하는 경우 AvroConfluent 포맷을 참고하십시오.
데이터 타입 매핑
INSERT 및 SELECT 쿼리에서 각각에 대응하는 ClickHouse 데이터 타입이 나와 있습니다.
bytes가 기본값이며, 설정output_format_avro_string_column_pattern으로 제어됩니다.
null을 암묵적으로 허용하므로, 예를 들어 Avro union(T1, T2, null)은 Variant(T1, T2)로 변환됩니다.
따라서 ClickHouse에서 Avro를 생성할 때는 스키마 추론 과정에서 실제로 어떤 값이 null인지 알 수 없으므로, Avro union 타입 집합에 항상 null 타입을 포함해야 합니다.
*** Avro 논리 타입
지원되지 않는 Avro 논리 데이터 타입:
time-millistime-microsduration
포맷 설정
예시
Avro 데이터 읽기
record 타입이어야 합니다.
테이블 컬럼과 Avro 스키마 필드 간의 대응 관계를 찾기 위해 ClickHouse는 이름을 비교합니다.
이 비교는 대소문자를 구분하며, 사용되지 않는 필드는 건너뜁니다.
ClickHouse 테이블 컬럼의 데이터 타입은 삽입되는 Avro 데이터의 해당 필드와 다를 수 있습니다. 데이터를 삽입할 때 ClickHouse는 위 표에 따라 데이터 타입을 해석한 다음, 데이터를 해당 컬럼 타입으로 캐스팅합니다.
데이터를 가져오는 중 스키마에서 필드를 찾을 수 없고 설정 input_format_avro_allow_missing_fields가 활성화되어 있으면, 오류를 발생시키는 대신 기본값이 사용됩니다.
Avro 파일에 데이터 쓰기
[A-Za-z_]로 시작해야 합니다- 뒤에는
[A-Za-z0-9_]만 사용할 수 있습니다
output_format_avro_codec 및 output_format_avro_sync_interval 설정으로 구성할 수 있습니다.
Avro 스키마 추론
DESCRIBE 함수를 사용하면 다음 예시처럼 Avro 파일에서 추론된 포맷을 빠르게 확인할 수 있습니다.
이 예시에는 ClickHouse S3 공개 버킷에서 공개적으로 접근할 수 있는 Avro 파일의 URL이 포함되어 있습니다.