如何检查Kafka主题中是否已存在密钥?

时间:2018-05-21 16:42:20

标签: python apache-kafka

我想要一个函数,比如checkKey(),它应该按如下方式工作:

def checkKey(key):
    if(key in topic-name):
        return True
    return False

我在Kafka的文档中找不到这个。我知道为了对数据进行重复数据删除,Kafka可以更新密钥。但是,我不想要更新,我想知道它是否已经存在。如果存在,我想以下列方式更新其值:

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

我需要使用Python执行,因此相同的代码示例将非常有用。

2 个答案:

答案 0 :(得分:0)

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

话虽这么说,Confluent有一个名为KSQL的流式SQL引擎,可能可以帮助你。您可以查找here

答案 1 :(得分:0)

您可以使用Kafka Streams。只需使用StreamBuilder为您的主题定义KTable。table使用Materialized.as("store-name")为状态存储提供名称,然后您可以使用Interactive Queries进行查询,请参阅该页面了解更多示例但是&# 39;简单到streams.store("store-name", QueryableStoreTypes.keyValueStore()).get(key)