微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apache Beam Kafka 源连接器空闲分区问题与“CustomTimeStampPolicyWithLimitedDelay”

如何解决Apache Beam Kafka 源连接器空闲分区问题与“CustomTimeStampPolicyWithLimitedDelay”

源是我们的光束管道的 kafka。即使任何分区空闲,Apache Beam 的 kafka IO 连接器也支持移动水印(在 flink runner 的情况下)。希望根据负载中包含的数据包的时间戳处理数据包的应用程序将希望使用“CustomTimestampPolicyWithLimitedDelay”。我们使用 FIXED WINDOWS 进行一分钟的聚合,这取决于时间的概念。因此,如果时间没有正确推进,则不会调用聚合函数并且会丢失数据。

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

  1. 以任意 x 秒的频率将数据仅抽取到一个分区,并且观察到即使在几分钟后也不会调用聚合函数
  2. 现在将数据泵送到所有分区,观察结果是按预期在分钟结束时调用聚合函数
  3. 现在仅将数据泵送到一个分区,并且直到几分钟结束之前才将数据泵送到一个分区,以便我们可以生成空闲分区场景并观察它现在是否按预期工作。

所以总结一下,这个 api 存在初始化问题,它不会提前时间,但在第 2 步之后它稳定并按预期工作。

这很容易重现,并且需要 apache beam 来解决这个问题。

截至目前,我们采用的临时修复是 LogAppendTime,它可以完美运行,但由于各种应用程序需求,我们不希望在代理时间处理数据包。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。