작성
·
183
0
안녕하세요,
producer의 send 로직을 보면 Serialization을 먼저 수행하고 Partitioner에서 파티션을 결정 짓는것으로 보이는데요,
key 값이 존재하는 경우 key 값에 대한 hash 알고리즘을 통해 파티셔너에서 파티션을 결정한다고 하였는데 직렬화 되어버리면 hash는 bytes 값에 대한 hash가 수행되는 건가요??
만약 맞다면, 파티셔너도 특정 키를 가진 데이터에 대해서 원하는 파티션을 지정하도록 커스터마이징이 가능한 것으로 알고 있는데, 파티셔너를 커스터마이징한다면 key 값을 직렬화 하고 그것에 대한 해시알고리즘을 적용해서 파티션 넘버를 반환하도록 짜야하는 것인지 궁금합니다.
답변 1
0
안녕하십니까,
좋은 질문이군요.
Producer에서 메시지를 직렬화하지만, 직렬화 이전의 Key, Value 값을 가지는 Producer Record도 함께 가지고 있습니다. partition은 직렬화 메시지 기준이 아니라 원본 key 값을 기준으로 결정됩니다.
나중에 최종적으로 보낼때는 직렬화 메시지만 전송되게 됩니다.
Custom Partitioner 생성하는 부분은 섹션 3의 마지막 3개 영상을 참조해 주시면 될 것 같습니다.
감사합니다.