KSQL - 删除主题

KSQL - drop topic

有没有办法从 KSQL 中删除主题?根据github是可以的,我试过了

DROP TOPIC my-topic
DROP TOPIC "my-topic"
DROP TOPIC 'my-topic'
DROP TOPIC `my-topic`

但是这两个命令都不起作用。我收到消息

 Message
-------------------------------------------------------------------------------
 io.confluent.ksql.util.KsqlException: No topic with name true was registered.

KSQL 主题与 Kafka 主题是不同的概念。 KSQL 主题是 KSQL 的一个内部概念,它表示一个 kafka 主题以及关于该主题的元数据,包括主题格式。 由于我们不在外部公开 KSQL 主题,因此您不应在 KSQL 语句中使用它。 如果你想删除一个 kafka 主题,你应该从 kafka 中删除它。未来我们计划为 KSQL 添加主题管理功能。

当您使用 TOPIC 创建流或 table 时,主题会在 KSQL 中注册 如下所示。

ksql> SHOW TOPICS;

Kafka Topic| Registered| Partitions | Partition Replicas | Consumers | Consumer Groups` 

---------------------------------------------------------------------------------------

 __confluent.support.metric| false      | 1          | 1                  | 0         | 0

_confluent-ksql-default__command_topic | true       | 1          | 1                  | 0         | 0

_schemas                               | false      | 1          | 1                  | 0         | 0

connect-configs                        | false      | 1          | 1                  | 0         | 0

connect-offsets                        | false      | 25         | 1                  | 0         | 0

connect-statuses                       | false      | 5          | 1                  | 0         | 0

email-filters                          | false      | 4          | 1                  | 0         | 0

请注意 email-filters 主题说 Registered 是假的,因为没有对应的流和 table。

所以当你试图放下它时。像这样:

ksql> DROP TOPIC "email-filters";

 Message
-----------------------------------------
 No topic with name true was registered.
-----------------------------------------
ksql>

所以@Hojjat 的回答是正确的。

这是解释。

删除stream/table时可以删除主题,使用命令: drop stream my_stream delete topicdrop table my_table delete topic;