无法在Kafka的Spark流中使用属性'max.poll.interval.ms'

时间:2018-10-26 06:42:48

标签: apache-spark apache-kafka

我正在使用火花流(直接流方法)从Kafka读取大约100万条记录/批次,并对数据进行一些分析,处理大约需要13-15分钟。

因此,为了稳定系统,我想更改kafka参数中的kafka属性'max.poll.interval.ms'以允许在15分钟后进行轮询。

'TRA-002'

但是当我检查日志时,它说:

WARN ConsumerConfig:已提供配置max.poll.interval.ms = 900000,但不是已知配置。

这与kafka版本有关,是否无法使用此属性。我正在使用Kafka版本(0.10.1.0)。

任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

它不是消费者属性的一部分。您可以在Spark conf中尝试spark.streaming.kafka.consumer.poll.ms。

答案 1 :(得分:0)

Tl;

博士

只需在pom.xml中添加工件即可解决问题。

<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>0.10.1.0</version>
</dependency>

完整答案

参数max.poll.interval.ms是从Kafka 0.10.1(KIP-62)开始添加的。

从Kafka 0.10.1开始,心跳已通过单独的线程发送,这大大减少了不必要的重新平衡。强烈建议从0.10.1开始使用kafka客户端。

根据DZone上发布的Sathvik Vutukuri's Spark 3.0.0 Example,显式添加特定版本的kafka客户端工件(在pom.xml / build.sbt中的依赖项列表中)将“强制”实例实例化正确版本的kafka客户端。

更多

随着时间的流逝,卡夫卡不断发展。始终建议使用已部署/源/目标kafka群集的匹配/兼容客户端版本。

在以下位置检查工件的完整列表:

https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients