confluent에서는 hdfs2를 위한 sink connector를 컨플루언트 커뮤니티 라이센스로 제공합니다. 해당 기능 중 파티셔너 기능에 대해 정리합니다.
https://docs.confluent.io/kafka-connect-hdfs/current/overview.html#partitioners-and-storage
partitioner.class
데이터를 HDFS에 저장할 때 파티션 종류를 지정합니다.
- Type: class
- Default: io.confluent.connect.storage.partitioner.DefaultPartitioner
- Importance: high
- Dependents: partition.field.name, partition.duration.ms, path.format, locale, timezone
사용가능한 파티셔너 종류는 다음과 같습니다.
- DefaultPartitioner : 카프카 파티션 번호를 기준으로 파티션을 구분
- DailyPartitioner : 일 단위로 파티션 구분
- HourlyPartitioner : 시간 단위로 파티션 구분
- FieldPartitioner : 특정 필드 이름별로 파티션 구분. partition.field.name 설정 필요함.
- TimeBasedPartitioner : 유입된 시간 기준으로(timestamp인듯) 파티션 설정
partition.field.name
FieldPartitioner를 사용할 경우 설정해야하는 옵션. 만약 여러 depth로 파티셔닝을 하려면 콤마를 기준으로 이름을 작성합니다.
partition.duration.ms
TimeBasedPartitioner를 사용할 경우 몇 밀리초단위로 파티션을 지정할지 정합니다. 기본값은 -1로서 TimeBasedPartitioner를 사용하지 않는 다는 뜻이 됩니다.
path.format
TimeBasedParitioner를 사용할 경우 시간 다뉘 파티션을 어떻게 나눌 것인지 정하게 됩니다. 예를 들어
path.format='year'=YYYY/'month'=MM/'day'=dd/'hour'=HH
로 설정할 경우 다음과 같이 적재됩니다.
/year=2015/month=12/day=07/hour=15/
locale
TimeBasedPartitioner를 사용할 경우 어느 나라 포맷을 사용할 것인지 정합니다.
timezone
TimeBasedPartitioner를 사용할 경우 어느 timezone을 기준으로 정할지 지정합니다.
timestamp.extractor
TimeBasedPartitioner를 사용할 경우 Wallclock 또는 Record 또는 RecordField 중 기준이 되는 시간을 지정합니다.
timestamp.field
TimeBasedPartitioner를 사용하고 RecordField로 시간을 뽑아낼 때 해당 시간을 사용하는 필드명을 지정합니다.
'빅데이터 > Kafka' 카테고리의 다른 글
kafka consumer와 seekToBeginning를 활용하여 offset reset하기 (0) | 2022.01.17 |
---|---|
스키마 레지스트리 자바 클라이언트(프로듀서,컨슈머) 테스트 (0) | 2021.12.16 |
confluent developer certification 예시 문제 해설 (0) | 2021.12.15 |
macos에서 podman으로 rest-proxy 실행하기 (0) | 2021.11.16 |
couchbase 카프카 싱크 커넥트 사용 방법 (0) | 2021.10.29 |
카프카 스트림즈에서 stateful window 처리를 다루는 방법 그리고 커밋타이밍 (4) | 2021.09.08 |