Как создать новую тему с пикафкой с разделами и репликацией?
Я хочу иметь возможность программно создать тему в Kafka, используя pykafka. Я знаю, что доступ к TopicDict автоматически создаст тему, если таковой не существует, но я не знаю, как управлять количеством разделов / реплик с этим. Кроме того, у него есть неприятная ошибка, когда он заканчивается бесконечным циклом, если Кафка падает. В основном я хочу сделать что-то вроде следующего:
create_topic('mytopic', partitions=2, replicas=3)
2 ответа
Pykafka - это реализация Python для API производителя и потребителя Kafka, и вам нужно выполнить операцию, которая в Kafka выполняется с использованием другого API, API администрирования / операций (фактически группы Java-классов). Я не думаю, что у Pykafka есть API/ оболочка для этого. То, что вы можете наблюдать, является темой, автоматически созданной Kafka. Что вы можете сделать, это настроить с помощью свойств количество разделов и реплик по умолчанию для автоматически создаваемых тем.
Вы можете сделать это с subprocess
Если вы устанавливаете бинарные файлы Kafka, вы можете сделать что-то вроде этого
from pykafka import KafkaClient
import subprocess
client = KafkaClient(hosts="localhost:9092")
subprocess.Popen("PATH/TO/KAFKA/BINARY/kafka_2.11-1.0.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic testtopic --replication-factor 1 --partitions 10".split())