Apache Avro
Apache Avro
이 확장 기능을 사용하면 Druid가 Apache Avro 데이터 형식을 다음과 같이 인제스트(수집)하고 파싱할 수 있어요.
출처: 문서
본문
이 Apache Druid 확장 기능은 Druid가 Apache Avro 데이터 형식을 다음과 같이 인제스트하고 파싱할 수 있게 해줘요:
- Kafka와 Kinesis용 Avro 스트림 입력 형식(Avro stream input format)
- 네이티브 배치 인제이션용 Avro OCF 입력 형식(Avro OCF input format)
Avro 확장 기능 불러오기 (Load the Avro extension)
Avro 확장 기능을 사용하려면 로드된 확장 목록에 druid-avro-extensions를 추가하세요. 자세한 내용은 Loading extensions를 참고하세요.
Avro 타입 (Avro types)
Druid는 대부분의 Avro 타입을 네이티브로 지원해요. 이 섹션에서는 몇 가지 예외 사항을 설명해요.
Unions
Druid는 union 타입을 지원하는 두 가지 모드가 있어요.
기본 모드는 union을 채우는 데이터 타입과 관계없이 union을 단일 값으로 취급해요.
union의 개별 멤버를 대상으로 연산하려면 Avro 입력 형식에 extractUnionsByType을 설정하세요. 이 설정은 다음 규칙에 따라 union 값을 중첩된 객체로 확장해요:
- 기본 타입(primitive types)과 이름 없는 복합 타입(unnamed complex types)은
int,string처럼 타입 이름으로 키가 지정돼요. - 복합 명명 타입(complex named types)은
record,fixed,enum을 포함한 이름으로 키가 지정돼요. - Avro
null타입은 값이 항상null일 수밖에 없으므로 생략돼요.
이것은 안전한데, Avro union은 각 이름 없는 타입의 단일 멤버만 포함할 수 있고, 동일한 명명 타입의 중복은 허용되지 않기 때문이에요. 예를 들어 단일 array만 허용되고, 각각 고유한 이름을 갖는다면 여러 record(또는 다른 명명 타입)는 허용돼요.
그러면 다른 중첩 타입과 마찬가지로 flattenSpec을 사용해 union의 멤버에 접근할 수 있어요.
바이너리 타입 (Binary types)
확장 기능은 기본적으로 bytes와 fixed Avro 타입을 base64로 인코딩된 문자열로 반환해요. 이 타입들을 UTF-8 문자열로 디코딩하려면 Avro 입력 형식에 binaryAsString 옵션을 활성화하세요.
Enums
확장 기능은 enum 타입을 enum 심볼의 문자열로 반환해요.
복합 타입 (Complex types)
입력 형식의 flattenSpec을 사용해 중첩된 데이터를 나타내는 record와 map 타입을 인제스트할 수 있어요.
논리 타입 (Logical types)
Druid는 현재 Avro 논리 타입(logical types)을 지원하지 않아요. 이를 무시하고 기본 타입(underlying primitive type)에 따라 필드를 처리해요.