在Kafka 2.6中,实现了KIP-557来将行为更改为emit-on-change。从PR(https://github.com/apache/kafka/pull/8254)看起来,新记录的时间戳与状态存储中的现有记录进行了比较。
如果新记录的时间戳不同,则转发该记录。如果它们相同,则比较字节。
如果我有一个流,我做一些处理,然后groupByKey,并减少。在reduce中,我比较了oldValue和newValue,并基于一些逻辑返回oldValue,然后根据这个KIP,时间戳和字节将是相同的,并且没有事件被发出。
但是,如果在reduce中我返回newValue,它将发出更改。
我们看到每个晚上都有2900万条记录加载到我们的集群中,其中只有一些包含新数据。我们一直希望我们只能发出改变的记录,我只是希望有人能证实我的理解。
KIP-557 https://cwiki.apache.org/confluence/plugins/servlet/mobile?contentId=145722102#content/view/144510692
1条答案
按热度按时间ki1q1bka1#
我可以看到你提到的KIP是通过这个故事https://issues.apache.org/jira/browse/KAFKA-8770实现的
在此行为因此问题而“禁用”一年后:https://issues.apache.org/jira/browse/KAFKA-12508的