如何使用pykafka创建带分区和复制的新主题?

时间:2016-01-08 19:31:54

标签: python apache-kafka kafka-python

我希望能够使用pykafka以编程方式在Kafka中创建主题。我知道访问TopicDict会自动创建一个主题,如果不存在但我不知道如何控制分区/副本的数量。此外,它有一个令人讨厌的错误,如果卡夫卡垮台,它会在无限循环中结束。基本上我想做类似以下的事情:

create_topic('mytopic', partitions=2, replicas=3)

2 个答案:

答案 0 :(得分:1)

Pykafka是Kafka生产者和消费者API的Python实现,您想要实现的是在Kafka中使用另一个API执行的操作,即管理/操作API(实际上是一组Java类)。我不认为Pykafka有一个API /包装器。 您可能正在观察的是由Kafka自动创建的主题。您可以做的是使用属性配置自动创建的主题的默认分区数和副本数。

答案 1 :(得分:0)

您可以使用subprocess

执行此操作

如果您安装Kafka binaries,则可以执行此类操作

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())