如何在第一次删除主题时删除ksql中的表或流

wmomyfyw  于 2021-06-07  发布在  Kafka
关注(0)|答案(4)|浏览(337)

使用ksql(confluent:version:5.0.1)我能够正常地删除表/流(使用 DROP [TABLE|STREAM] ) <NAME> 当链接主题存在且已注册时(registered=true)。
但是,如果先删除主题(registered=false),则不能删除关联的流或表,因为ksql指出“没有注册名为foo的主题”。
问题是流/表仍然显示在列表中,并且不能使用相同的名称添加新的流/表。
在主题被删除后,有没有办法删除它们?

cyvaqqii

cyvaqqii1#

根据官方文件,我会这样做:

SHOW QUERIES;

写下查询ID;

TERMINATES <QueryID>;

DROP TABLE <tablename>;

请参阅文档。。。

yks3o0rb

yks3o0rb2#

您必须先终止任何正在运行的查询。

SHOW QUERIES;  --> that will show you the active queries (COPY QUERY ID)

然后:

TERMINATE [QUERY ID];

然后:删除[表或流];

wooyq4lh

wooyq4lh3#

我已经和这些类型的问题斗争了一段时间。从我的笔记来看,我的观点是:
删除流/表/主题时遇到问题?在zookeeper中删除它们:
关闭与要删除的主题相关联的所有生产者或消费者
尝试从ksqlcli中删除表和流
关闭ksql服务器
使用“kafka topic”cli删除主题
在zookeeper中删除,如下所示:
饲养员壳localhost:2181
ls/经纪人/主题
_confluent-controlcenter-5-0-0-1-triggereventsstore-changelog、\u confluent-controlcenter-5-0-0-1-error-topic、。。。
rmr/经纪人/主题/你的主题名
现在做一个“Kafka主题——列表——Zookeeper”localhost:2181“他们应该永远消失。
或者,对于绝对核选项:
尝试从ksqlcli中删除表和流
关闭ksql服务器
关闭你的经纪人和Zookeeper
删除每个代理节点上kafka logs dir中的所有内容(dir的位置在属性文件中定义)。
再次启动zookeeper并从zookeeper cli中删除/brokers/topics
把一切重新开始,一切都应该消失。但要小心,你会失去一切,所有的数据。

inb24sb2

inb24sb24#

我想我找到了答案,或者至少是正确的方向。
您需要在流中重新注册主题。经过一段时间的黑客攻击,我成功地将我的主题重新附加到流上,然后删除流。

REGISTER TOPIC <ksql_topic_name> WITH (KAFKA_TOPIC='<kafka_topic_name>', VALUE_FORMAT='<format>');

那么,

DROP STREAM <stream_name>;

我不知道这是否适用于所有情况,但它让我回到了我想去的地方。如果其他任何人可以重复这一点,并找到一个更强大的解决方案,我想听到它。

相关问题