最近,在协助其他同事测试flink消费kafka数据,窗口计算的准确性问题。

1、现象

        同事往kafka发送数据,结果窗口一直无法触发计算。但是使用我的mock代码,往kafka发送数据时,窗口计算正常触发。

2、问题

        经过排查,同事的代码把所有的数据发往kafka的一个分区;我的代码会负载均衡,发到所有分区。

3、分析

        kafka有三个分区,flink程序会读取到来自三个分区的数据,并取每个分区的最新事件时间戳作为水位线,然后取三个分区的水位线最低的,作为整个程序的水位线。同事的代码只往其中一个分区发送数据,导致其他两个分区的水位线一直无法更新,所以一直无法触发窗口计算。

4、解决

        将指定分区的代码删除,将数据发往多个分区;

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐