Python 如何检查卡夫卡主题中是否已经存在密钥?

Python 如何检查卡夫卡主题中是否已经存在密钥?,python,apache-kafka,Python,Apache Kafka,我想要一个函数,比如checkKey,它的工作原理如下: def checkKey(key): if(key in topic-name): return True return False 我在卡夫卡的文件中找不到这个。我知道为了消除重复数据,Kafka可以更新密钥。但是,我不想更新,我想知道它是否已经存在。如果它存在,我想用以下方式更新它的值: def updateValue(key): if(checkKey(key)): valu

我想要一个函数,比如checkKey,它的工作原理如下:

def checkKey(key):
    if(key in topic-name):
        return True
    return False
我在卡夫卡的文件中找不到这个。我知道为了消除重复数据,Kafka可以更新密钥。但是,我不想更新,我想知道它是否已经存在。如果它存在,我想用以下方式更新它的值:

def updateValue(key):
    if(checkKey(key)):
        value of key in topic-name += 1

这是我需要使用Python来执行的,所以同样的代码示例将非常有用。

Kafka不是一个表,它是一个队列。要查看某个主题中是否存在密钥,您需要阅读整个主题,或者,如果可能的话,保留该主题的本地副本。如果您知道分区逻辑,您可以将搜索限制到特定分区


也就是说,Confluent有一个名为KSQL的流式SQL引擎,它可能会帮助您。您可以查找它,您可以使用它。只需使用StreamBuilder为主题定义一个KTable。使用Materialized.asstore-name为状态存储提供名称,然后您可以使用查询它,有关更多示例,请参见该页面,但它与streams.storestore-name、QueryableStoreTypes.keyValueStore.getkey一样简单

您可以计算已知密钥的分区,以防止扫描整个主题,这仍然是次优解决方案。我正在做一个项目,每天在一个40分区的主题上放置600多亿条记录。扫描单个分区仍然是一场噩梦。我只是澄清了扫描整个主题是没有必要的。KSQL还需要扫描一个主题分区,以至少在一开始就找到一个正确的键。感谢您的澄清。@nads如何避免基于密钥的重复?你能用Python举例说明吗?这个问题被标记为Python。您需要提到Kafka Streams需要JVM语言