Как уменьшить количество разделов Kafka?

Я создал тему с 4 разделами на Кафке. (установить по умолчанию number.partition=4). Теперь я хочу изменить номер раздела этой темы на 3. Я пытался запустить

./bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic my-topic --partitions 3

но нет изменений. У этого все еще есть 4 раздела. Кто-нибудь знает об этом?

Ответ 1

Apache Kafka не поддерживает уменьшение номера раздела. Вы должны увидеть тему в целом, а разделы - способ масштабирования производительности. Таким образом, все данные, отправленные в поток тем для всех разделов и удаляющие один из них, означают потерю данных.

Ответ 2

Вы не можете просто удалить раздел, потому что это приведет к потере данных, а остальные ключи данных будут неправильно распределены, поэтому новые сообщения не будут направлены на те же разделы, что и старые существующие сообщения с одним и тем же ключом.

По вышеуказанным причинам Kafka не поддерживает уменьшение количества разделов по существующей теме.

Что вы можете сделать, так это создать новую тему с тремя разделами, а затем написать небольшую программу (или использовать существующий инструмент репликации), чтобы скопировать данные из старой темы раздела 4 в новую тему раздела 3. Таким образом, вы будете запускать все через один и тот же разделитель, и все ваши ключевые сообщения попадут в правый раздел. Как только вы будете удовлетворены, все данные будут скопированы, а затем удалите исходную тему раздела 4.

Если вы должны сохранить то же имя темы, что и исходная тема, просто создайте новую тему с исходным именем, скопируйте данные из разделенного раздела и удалите этот раздел временного перераспределения.

Ответ 3

Уменьшение номера раздела не поддерживается.