Apache kafka 卡夫卡德下一个()慢

Apache kafka 卡夫卡德下一个()慢,apache-kafka,spark-streaming,spark-streaming-kafka,Apache Kafka,Spark Streaming,Spark Streaming Kafka,我的卡夫卡有数据积累问题。排除故障后,我发现数据消耗非常耗时,大约10分钟一次。我在这里找到了具体的代码 while (consumerRecords.hasNext()) { long begin = System.currentTimeMillis(); ConsumerRecord<String, Message> consumerRecord = consumerRecords.next(); long next = Syste

我的卡夫卡有数据积累问题。排除故障后,我发现数据消耗非常耗时,大约10分钟一次。我在这里找到了具体的代码

   while (consumerRecords.hasNext()) {
       long begin = System.currentTimeMillis();
       ConsumerRecord<String, Message> consumerRecord = consumerRecords.next();
       long next = System.currentTimeMillis() - begin ;
   ....
while(consumerRecords.hasNext()){
long begin=System.currentTimeMillis();
ConsumerRecord ConsumerRecord=consumerRecords.next();
long next=System.currentTimeMillis()-开始;
....
consumerRecords对象的类型是KafkaRDD,next()方法花费了大约40秒来返回数据。这导致了数据累积

这是我的监控信息

2020/10/19 18:03:44.000 7项记录 40分钟 0.4秒 40分钟
2020/10/19 18:03:43.500 2项记录 40分钟 0.4秒 40分钟
2020/10/19 18:03:43.000 7项记录 39分钟 40秒 40分钟
2020/10/19 18:03:42.500 2项记录 39分钟 0.4秒 39分钟
2020/10/19 18:03:42.000 8项记录 39分钟 0.4秒 39分钟

我不知道如何继续解决这个问题,或者是什么原因导致它如此耗时


请给我一些指导和建议,谢谢你

你为什么需要RDD的个人记录?@OneCricketeer我不明白“个人记录”是什么意思。这里的业务是获取卡夫卡消息并执行计算。没有其他业务。计算本身非常快,但每四到五分钟一次此外,还有一个非常大的next()方法。delay
consumerRecords。next()
将一次读取一条记录。如果您只需要消费和处理Kafka事件,您可以使用标准Java消费者库,而不是Spark,后者更常用于结构化流媒体(Kafka的RDD API被认为已弃用)还不清楚制作人将数据发送到主题中的速率,但消费者调查是一个阻塞呼叫,很容易需要几秒钟到几分钟,这取决于您以与spring kafka相同的方式为“标准Java消费者”提供的参数。它能在spark中使用吗?有使用示例吗?我们公司的选择is spark,很难替换。制作人生成数据的速度非常快。