KSQL - 放弃主题

时间:2017-12-05 18:08:16

标签: apache-kafka ksql

有没有办法从KSQL中删除主题?根据{{​​3}},这是可能的,我尝试了

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.

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

使用TOPIC创建流或表时,主题将在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是假的,因为没有相应的流和表。

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

ksql> DROP TOPIC "email-filters";

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

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

这是解释。

答案 2 :(得分:1)

可以在删除流/表时删除主题,命令如下: drop stream my_stream delete topicdrop table my_table delete topic;