Flink Kafka源代码中的并行性导致不执行任何操作 [英] Parallelism in flink kafka source causes nothing to execute

查看:18
本文介绍了Flink Kafka源代码中的并行性导致不执行任何操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个卡夫卡和闪烁的初学者。 我注意到一些令人不安的事情。当我将Kafka作业的并行度增加到任何大于1的值时,我没有窗口来执行它们的进程。我希望使用并行度来提高分析速度。

查看Apache Flink Web Dashboard中可视化问题的图像示例。 这是完全相同的代码和接收到的完全相同的数据集,区别仅是并行性。在第一个示例中,摄取的数据流经窗口函数,但是当并行度增加时,数据只是堆积在从不执行的第一个窗口函数中。它将永远保持这种状态,不会产生任何错误。

代码中使用的源是KafkaSource,FlinkKafkaConsumer似乎可以很好地使用相同的设置,但已弃用,所以我不希望使用它。

谢谢您的意见!

推荐答案

问题(几乎可以肯定),正在消费的kafka主题的分区比配置的并行度少。新KafkaSource处理此情况的方式与FlinkKafkaConsumer不同。

事件时间窗口等待指示流现在已完成的水印的到达,直到窗口的结束时间。当KafkaSource运算符有10个实例时,其中一些实例没有接收任何数据,这些空闲实例保留了水印。基本上,Flink并不知道这些实例永远不会产生数据--相反,它在等待分配给它们要做的工作。

您可以通过执行以下操作之一来修复此问题:

  • 将Flink的并行度降低到小于或等于Kafka分区数。
  • WatermarkStrategy配置为使用withIdleness(duration),以便空闲实例将识别出它们没有执行任何操作,并(临时)将其自身从水印中移除。(如果为这些实例分配了要使用的拆分/分区,它们将继续进行水印操作。)

这篇关于Flink Kafka源代码中的并行性导致不执行任何操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆