Как удалить несколько тем в Apache Kafka

Предполагая, что у меня есть несколько тем с одинаковым префиксом, например:

giorgos-topic1
giorgos-topic2
giorgos-topic3
...

Команда, используемая для удаления одной темы (например, giorgos-topic1), выглядит следующим образом:

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic giorgos-topic1

Можно ли удалить несколько тем с помощью одной команды и, возможно, регулярного выражения/подстановочного знака (например, giorgos-*) вместо того, чтобы вводить все названия тем, которые необходимо удалить, одно за другим?


person Giorgos Myrianthous    schedule 05.02.2018    source источник


Ответы (5)


Да, вы можете использовать регулярные выражения при удалении тем с помощью инструмента kafka-topics.sh:

Например, чтобы удалить все темы, начинающиеся с giorgos-:

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'

Используя Admin API, вы также можете удалить сразу несколько тем, см. AdminClient.deleteTopics

person Mickael Maison    schedule 05.02.2018
comment
как насчет удаления нескольких шаблонов, например, foo.* bar.* ? - person petertc; 16.10.2018

В случаях, когда регулярное выражение невозможно, мы можем использовать разделенный запятыми список имен тем для удаления тем.

kafka-topics.sh --zookeeper 10.0.0.160:2181 --delete --topic giorgos-topic1,giorgos-topic2,giorgos-topic3,...
person Aman Saurav    schedule 13.11.2018
comment
Регулярное выражение всегда возможно. В этом примере giorgos-topic[123]. Вы также можете использовать ИЛИ. (some-topic|my-other-topic_1) - person OneCricketeer; 18.01.2020

Пожалуйста, добавьте одинарную кавычку ('giorgos-.* '), если он жалуется как no matches found: giorgos-.*

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'
person kundan bora    schedule 07.01.2019

Просто чтобы добавить к принятому ответу, подстановочному знаку * должен предшествовать '.'

По моему опыту:

--delete --topic '_confluent-controlcenter-5-3-1-1-.*' работает

--delete --topic '_confluent-controlcenter-5-3-1-1-*' НЕ работает

Примечание. Я бы добавил это как комментарий, но мне не хватает репутации.

person famen    schedule 24.03.2021
comment
Это потому, что это регулярное выражение, а не синтаксис glob. Кроме того, принятый ответ подразумевал, что вам нужен .* - person Cardin; 30.04.2021

Это самый простой способ удалить все темы за один раз. Выполните следующие шаги:

  1. Подключитесь к CLI зоопарка.

локальный хост zookeeper-shell.bat: 2181

Вы получите сообщение - Добро пожаловать в zookeeper!

  1. Затем введите приведенную ниже команду, и все темы будут удалены.

удалить все /брокеры/темы

Я проверил это на себе, и это сработало для меня.

person anurag tripathi    schedule 15.01.2021