【问题标题】:How to create a list of topics in Apache Kafka using single command如何使用单个命令在 Apache Kafka 中创建主题列表
【发布时间】:2020-06-01 01:55:10
【问题描述】:
到目前为止,我正在使用以下命令一一创建主题。
sh ./bin/kafka-topics --create --zookeeper localhost:2181 --topic sdelivery --replication-factor 1 --partitions 1
因为我有 200 多个主题要创建。有没有办法用一个命令创建一个主题列表?
我使用的是 0.10.2 版本的 Apache Kafka。
【问题讨论】:
标签:
unix
apache-kafka
apache-zookeeper
【解决方案1】:
这似乎更像是一个 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 的默认主题设置,并允许在您第一次向它们发送消息时自动创建这些主题。
【解决方案2】:
为每个主题添加自定义分区和复制的扩展答案
您可以为此使用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" 的调用可能会有所帮助