如何删除 Apache Kafka 中的多个主题
How to delete multiple topics in Apache Kafka
假设我有多个主题具有相同的前缀,例如:
giorgos-topic1
giorgos-topic2
giorgos-topic3
...
用于删除单个主题(比如giorgos-topic1
)的命令如下:
./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic giorgos-topic1
是否可以使用单个命令和可能的常规 expression/wildcard(例如 giorgos-*
)删除多个主题,而不是逐一键入所有需要删除的主题名称?
是的,您可以在使用 kafka-topics.sh
工具删除主题时使用类似正则表达式的表达式:
例如删除所有以giorgos-
开头的主题:
./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'
使用 Admin API,您还可以一次删除多个主题,请参阅
AdminClient.deleteTopics
在无法使用正则表达式的情况下,我们可以使用逗号分隔的主题名称列表来删除主题。
kafka-topics.sh --zookeeper 10.0.0.160:2181 --delete --topic giorgos-topic1,giorgos-topic2,giorgos-topic3,...
如果报错no matches found: giorgos-.*
请加单引号('giorgos-.* ')
./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'
这是一次删除所有主题的最简单方法。
按照以下步骤操作:
- 连接到 zookeeper CLI。
zookeeper-shell.bat localhost:2181
您将收到一条消息 - “欢迎使用动物园管理员!”
- 然后输入以下命令,所有主题将被删除。
deleteall /brokers/topics
我自己测试过,对我有用。
只是为了添加到已接受的答案中,* 通配符前面需要加上“.”
根据我的经验:
--delete --topic '_confluent-controlcenter-5-3-1-1-.*' 有效
--delete --topic '_confluent-controlcenter-5-3-1-1-*' 不起作用
注意:我会把它添加为评论,但没有足够的代表。
最近的 Kafka 版本将删除 Zookeeper 依赖项,并且今后您需要通过 --boostrap-server
:
引用代理
kafka-topics \
--bootstrap-server localhost:9092,localhost:9093,localhost:9094
--delete \
--topic 'giorgos-.*'
假设我有多个主题具有相同的前缀,例如:
giorgos-topic1
giorgos-topic2
giorgos-topic3
...
用于删除单个主题(比如giorgos-topic1
)的命令如下:
./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic giorgos-topic1
是否可以使用单个命令和可能的常规 expression/wildcard(例如 giorgos-*
)删除多个主题,而不是逐一键入所有需要删除的主题名称?
是的,您可以在使用 kafka-topics.sh
工具删除主题时使用类似正则表达式的表达式:
例如删除所有以giorgos-
开头的主题:
./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'
使用 Admin API,您还可以一次删除多个主题,请参阅 AdminClient.deleteTopics
在无法使用正则表达式的情况下,我们可以使用逗号分隔的主题名称列表来删除主题。
kafka-topics.sh --zookeeper 10.0.0.160:2181 --delete --topic giorgos-topic1,giorgos-topic2,giorgos-topic3,...
如果报错no matches found: giorgos-.*
./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'
这是一次删除所有主题的最简单方法。 按照以下步骤操作:
- 连接到 zookeeper CLI。
zookeeper-shell.bat localhost:2181
您将收到一条消息 - “欢迎使用动物园管理员!”
- 然后输入以下命令,所有主题将被删除。
deleteall /brokers/topics
我自己测试过,对我有用。
只是为了添加到已接受的答案中,* 通配符前面需要加上“.”
根据我的经验:
--delete --topic '_confluent-controlcenter-5-3-1-1-.*' 有效
--delete --topic '_confluent-controlcenter-5-3-1-1-*' 不起作用
注意:我会把它添加为评论,但没有足够的代表。
最近的 Kafka 版本将删除 Zookeeper 依赖项,并且今后您需要通过 --boostrap-server
:
kafka-topics \
--bootstrap-server localhost:9092,localhost:9093,localhost:9094
--delete \
--topic 'giorgos-.*'