如何使用单个命令在Apache Kafka中创建主题列表

时间:2017-03-30 10:52:19

标签: unix apache-kafka apache-zookeeper

截至目前,我正在使用以下命令逐个创建主题。

sh ./bin/kafka-topics --create --zookeeper localhost:2181  --topic sdelivery --replication-factor 1 --partitions 1

因为我要创建200多个主题。有没有办法用一个命令创建一个主题列表?

我正在使用0.10.2版本的Apache Kafka。

2 个答案:

答案 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"的调用