Как удалить таблицу или поток в KSQL, когда тема была удалена первой
Использование KSQL (Confluent: Version: 5.0.1) Я могу нормально отбрасывать таблицу / поток (используя DROP [TABLE|STREAM]
) <NAME>
когда связанная тема существует и когда она зарегистрирована (Registered=true).
Однако, если тема удалена первой (Registered=false), то связанный поток или таблица не могут быть отброшены с помощью KSQL, указывающего, что "не было зарегистрировано ни одной темы с именем Foo".
Проблема в том, что поток / таблица по-прежнему отображается в списке, и новый поток / таблица не могут быть добавлены с тем же именем.
Есть ли способ удалить их после удаления темы?
1 ответ
Из официальной документации я бы сделал так:
SHOW QUERIES;
Запишите QueryID;
TERMINATES <QueryID>;
DROP TABLE <tablename>;
Я думаю, что нашел ответ, или, по крайней мере, в правильном направлении.
Вам необходимо заново зарегистрировать тему в потоке. После небольшого взлома мне удалось снова присоединить мои темы к потокам, отбросить потоки.
REGISTER TOPIC <ksql_topic_name> WITH (KAFKA_TOPIC='<kafka_topic_name>', VALUE_FORMAT='<format>');
Затем,
DROP STREAM <stream_name>;
Я не знаю, работает ли это во всех случаях, но это вернуло меня туда, где я хочу быть. Если кто-то еще может повторить это и найти более надежное решение, я хотел бы услышать об этом.
Я боролся с этими проблемами типа некоторое время. Вот где я в своих заметках:
Возникли проблемы при удалении потоков / таблиц / тем? Удалить их в zookeeper:
- Отключите всех производителей или потребителей, связанных с темами, которые вы будете удалять
- Попытайтесь удалить ваши таблицы и потоки из интерфейса командной строки KSQL.
- Завершите работу сервера KSQL
- Удалите темы с помощью CLI " kafka-topic"
Удалить в Zookeeper, как это:
местный хост zookeeper-shell: 2181
ls / brokers / themes
_confluent-controlcenter-5-0-0-1-TriggerEventsStore-changelog, _confluent-controlcenter-5-0-0-1-error-topic,...
rmr / brokers / themes/yourTopicName
Теперь сделайте " kafka-themes --list --zookeeper localhost:2181', и они должны быть навсегда.
ИЛИ, для АБСОЛЮТНОГО ЯДЕРНОГО ВАРИАНТА:
- Попытайтесь удалить ваши таблицы и потоки из интерфейса командной строки KSQL.
- Завершите работу сервера KSQL
- Выключите своих брокеров и зоопарков
- Удалите все в директории kafka logs на каждом узле брокера (местоположение директории определяется в вашем файле свойств).
- Снова запустите zookeepers и удалите / brokers / themes из CLI zookeeper.
Запустите все обратно, и все должно исчезнуть. Но будьте осторожны, вы потеряете все, все свои данные.
Сначала вам нужно будет завершить все запущенные запросы.
SHOW QUERIES; --> that will show you the active queries (COPY QUERY ID)
Потом:
TERMINATE [QUERY ID];
Затем: УДАЛИТЬ [ТАБЛИЦА ИЛИ ПОТОК];