截至目前,我正在使用以下命令逐个创建主题。
sh ./bin/kafka-topics --create --zookeeper localhost:2181 --topic sdelivery --replication-factor 1 --partitions 1
因为我要创建200多个主题。有没有办法用一个命令创建一个主题列表?
我正在使用0.10.2版本的Apache Kafka。
答案 0 :(得分:3)
这似乎更像是一个unix / bash问题而不是Kafka问题:xargs实用程序专门用于从参数列表中重复运行命令。在您的具体情况下,您可以使用:
cat topic_list.txt | xargs -I % -L1 sh ./bin/kafka-topics --create --zookeeper localhost:2181 --topic % --replication-factor 1 --partitions 1
如果你想做一个"干跑"并查看将执行哪些命令,您可以将sh
替换为echo sh
。
或者,您可以确保配置文件的默认主题设置为--replication-factor 1
和--partitions 1
,并且只允许在您第一次向其发送消息时自动创建这些主题。
答案 1 :(得分:1)
扩展答案,以按主题添加自定义分区和复制
您可以为此使用awk
创建文件
$ cat /tmp/topics.txt
test1:1:1
test2:1:2
然后cd
到您的Kafka文件夹,并解析文件
$ awk -F':' '{ system("./bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic=" $1 " --partitions=" $2 " --replication-factor=" $3) }' /tmp/topics.txt
Created topic "test1".
Created topic "test2".
我们可以看到主题已创建
$ ./bin/kafka-topics.sh --zookeeper localhost:2181 --list
test1
test2
注意:数百个主题很快就会使Zookeeper过载,因此可能有助于在最后添加对"; sleep 10"
的调用