Apache kafka 卡夫卡流-第一个示例WordCount不';I don’我不能正确地数第一圈
我正在研究Kafka Streams,我对Java8中的第一个WordCount示例有一个问题,该示例取自文档 使用最新版本的kafka streams、kafka Connect和WordCount lambda表达式示例 我遵循以下步骤: 我在卡夫卡中创建了一个输入主题,一个输出主题。启动应用程序流,然后通过插入.txt文件中的一些单词上传输入主题 在第一次计数时,在输出主题中,我看到单词分组正确,但计数错误。如果我尝试重新插入相同的单词,则先前不正确计数的连续计数都是正确的 如果我使用使用者控制台查看输入主题转储,它已正确加载,并且没有脏数据 第一次怎么算错了 示例[第一个数据]: (卡夫卡输入主题) 嗨 迈克 试验 (正在运行应用程序流) (输出主题)hi 12 mike 4测试3(偶然计数) [连续数据-在输入主题中发布相同的单词] (输出主题)hi 14 mike 6测试4 [新尝试] (输出主题)hi 16 mike 8测试5Apache kafka 卡夫卡流-第一个示例WordCount不';I don’我不能正确地数第一圈,apache-kafka,apache-kafka-streams,apache-kafka-connect,bigdata,Apache Kafka,Apache Kafka Streams,Apache Kafka Connect,Bigdata,我正在研究Kafka Streams,我对Java8中的第一个WordCount示例有一个问题,该示例取自文档 使用最新版本的kafka streams、kafka Connect和WordCount lambda表达式示例 我遵循以下步骤: 我在卡夫卡中创建了一个输入主题,一个输出主题。启动应用程序流,然后通过插入.txt文件中的一些单词上传输入主题 在第一次计数时,在输出主题中,我看到单词分组正确,但计数错误。如果我尝试重新插入相同的单词,则先前不正确计数的连续计数都是正确的 如果我使用使用
等等……Apache Kafka中的WordCount演示有: 这意味着,当您重新启动应用程序时,如果没有存储在Kafka中的WordCount应用程序的现有使用者偏移量,它将从一开始(“最早”)读取其输入主题。应用程序的消费者补偿在一定程度的应用程序不活动后在卡夫卡过期,默认为24小时(参见
offset.retention.minutes
)
我可以想象发生了以下事情:
- 您在一段时间前试用过卡夫卡,并在输入主题中输入了测试数据
- 然后,您在恢复实验前休息了>24小时
- 现在,当应用程序重新启动时,从一开始就恢复到重新读取输入主题,从而拾取较旧的测试输入数据,从而导致“膨胀”计数
这将显示主题“yourInputTopic”中的所有可用数据,减去在此期间可能已从Kafka主题中清除的任何数据(默认代理配置将清除超过7天的数据,请参阅
log.retention.hours
)。Apache Kafka中的WordCount演示具有:
这意味着,当您重新启动应用程序时,如果没有存储在Kafka中的WordCount应用程序的现有使用者偏移量,它将从一开始(“最早”)读取其输入主题。应用程序的消费者补偿在一定程度的应用程序不活动后在卡夫卡过期,默认为24小时(参见offset.retention.minutes
)
我可以想象发生了以下事情:
- 您在一段时间前试用过卡夫卡,并在输入主题中输入了测试数据
- 然后,您在恢复实验前休息了>24小时
- 现在,当应用程序重新启动时,从一开始就恢复到重新读取输入主题,从而拾取较旧的测试输入数据,从而导致“膨胀”计数
这将显示主题“yourInputTopic”中的所有可用数据——减去在此期间可能已从Kafka主题中清除的任何数据(默认代理配置将清除超过7天的数据,请参见
log.retention.hours
)。听起来很奇怪。你能重现这个问题吗?这不应该发生,听起来很奇怪。你能重现这个问题吗?这不应该发生。谢谢你的回答。事实上,当我在24小时后进行测试(然后是新的偏移量)时,我删除了旧主题(我启用了取消),并从头开始重新创建它们,以实现新的干净执行。问题再次出现。但现在我在示例代码中添加了流线配置.put(ConsumerConfig.AUTO\u OFFSET\u RESET\u CONFIG,“最早”),似乎效果不错。也许我还没有完全解决这个问题,但它是有效的。几周前我也遇到过类似的问题,但有时计数是负数。这可能是由类似的原因造成的吗?负计数?这听起来像是另一个问题。此处描述的问题只会导致计数膨胀(即计数高于实际值)。感谢您的回答。事实上,当我在24小时后进行测试(然后是新的偏移量)时,我删除了旧主题(我启用了取消),并从头开始重新创建它们,以实现新的干净执行。问题再次出现。但现在我在示例代码中添加了流线配置.put(ConsumerConfig.AUTO\u OFFSET\u RESET\u CONFIG,“最早”),似乎效果不错。也许我还没有完全解决这个问题,但它是有效的。几周前我也遇到过类似的问题,但有时计数是负数。这可能是由类似的原因造成的吗?负计数?这听起来像是另一个问题。此处描述的问题只会导致计数膨胀(即计数高于实际值)。
// setting offset reset to earliest so that we can re-run the demo code with the same pre-loaded data
// Note: To re-run the demo, you need to use the offset reset tool:
// https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+Application+Reset+Tool
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic yourInputTopic --from-beginning