Что именно происходит, когда происходит перераспределение в потоке кафки? - PullRequest
1 голос
/ 07 марта 2019

Скажем, у меня есть поток сотрудников, набранный empId, который также включает departmentId.Я хочу агрегировать по отделам.Поэтому я делаю маппер selectKey(, чтобы получить DepartmentId ), затем groupByKey() (или я мог бы просто сделать groupBy(...), я полагаю), а затем, скажем, count ().Что именно происходит?Я понимаю, что это делает "передел".Я думаю , что происходит, когда он пишет во "внутреннюю" тему, которая является просто обычной темой с производным именем, созданной автоматически.То есть совместно используется всеми экземплярами потока, а не только одним (то есть не локальным).Таким образом, агрегация распространяется на все новые ключи, а не только на те сообщения из экземпляра исходного потока (я думаю).Это правильно?

Я не нашел исчерпывающего описания передела.Кто-нибудь может указать мне хорошую статью по этому поводу?

1 Ответ

2 голосов
/ 08 марта 2019

То, что вы описываете, это именно то, что происходит.

Шаг перераспределения аналогичен through() (автоматически вставлен в топологию обработки), что является ярлыком to("topic") плюс builder.stream("topic").

Это также проиллюстрировано и объяснено в этом сообщении в блоге: https://www.confluent.io/blog/data-reprocessing-with-kafka-streams-resetting-a-streams-application/

...