Java Apache Beam Kafka源连接器空闲分区问题;CustomTimeStampPolicyWithLimitedDelay“;

Java Apache Beam Kafka源连接器空闲分区问题;CustomTimeStampPolicyWithLimitedDelay“;,java,apache-flink,apache-beam,apache-beam-kafkaio,Java,Apache Flink,Apache Beam,Apache Beam Kafkaio,来源是我们beam管道的卡夫卡。Apache beam的kafka IO连接器支持水印的移动(在flink runner的情况下),即使任何分区处于空闲状态。希望根据有效负载中包含的数据包的时间戳处理数据包的应用程序将希望使用“CustomTimestampPolicyWithLimitedDelay”。我们使用一分钟的固定窗口进行聚合,这取决于时间的概念。所以,若时间不能正确推进,则不会调用聚合函数并丢失数据 此API存在功能问题。因此,当应用程序初始化时,让我们举个例子,主题a用作具有三个分

来源是我们beam管道的卡夫卡。Apache beam的kafka IO连接器支持水印的移动(在flink runner的情况下),即使任何分区处于空闲状态。希望根据有效负载中包含的数据包的时间戳处理数据包的应用程序将希望使用“CustomTimestampPolicyWithLimitedDelay”。我们使用一分钟的固定窗口进行聚合,这取决于时间的概念。所以,若时间不能正确推进,则不会调用聚合函数并丢失数据

此API存在功能问题。因此,当应用程序初始化时,让我们举个例子,主题a用作具有三个分区的源。采取这些步骤是为了重现这一问题:

  • 以任意x秒的频率将数据仅泵送到一个分区,即使在几分钟后也不会调用聚合函数
  • 现在,将数据泵送到所有分区,并按预期在分钟结束时调用聚合函数
  • 现在,只将数据泵送到一个分区,并且在这之前的一分钟结束之前也不要这样做,这样我们就可以生成一个空闲分区场景,并且观察到它现在可以像预期的那样工作
  • 因此,总结一下,这个api存在一个初始化问题,它不会提前时间,但在步骤2之后,它会稳定下来并按预期工作

    这很容易复制,需要apache beam来修复


    到目前为止,我们使用的临时修复程序是LogAppendTime,它可以完美地工作,但由于各种应用程序的需要,我们不希望在代理时间处理数据包。

    不幸的是,我没有这个问题的答案,但如果您想将其报告为一个bug,我建议您使用组件“io java kafka”在上编写一份bug报告. 这将为您的bug报告提供最佳可见性。当然@DanielOliveira谢谢我会这样做:)在这里->