Кафка max.poll.records не работает в потоковой передаче искры - PullRequest
0 голосов
/ 27 сентября 2018

моя версия для потокового воспроизведения - 2.0, версия для kafka - 0.10.0.1, spark-streaming-kafka-0-10_2.11.Я использую прямой способ получения записей kafka, теперь я хочу ограничить максимальное количество сообщений, которые я получаю в пакете.поэтому я установил значение max.poll.records, но оно не работает.Число потребителей в искре равно количеству разделов в кафке, поэтому максимальное количество записей в потоковой передаче искры составляет max.poll.records * потребителей?

1 Ответ

0 голосов
/ 02 апреля 2019

max.poll.records контролирует верхнюю границу для количества записей, возвращаемых из опроса.

При потоковой передаче искры в одной партии может происходить более одного опроса.В этом случае max.poll.records не будет очень полезным.Вы должны использовать spark.streaming.kafka.maxRatePerPartition, в соответствии с документацией

Важным является spark.streaming.kafka.maxRatePerPartition, который является максимальной скоростью (в сообщениях в секунду), с которой каждыйРаздел Kafka будет читаться этим прямым API

Таким образом, максимальное количество записей в пакете будет

(spark.streaming.kafka.maxRatePerPartition) * (пакет)продолжительность в секундах) * (количество разделов kafka)

например, если в теме 2 раздела, длительность пакета составляет 30 секунд, а spark.streaming.kafka.maxRatePerPartition - 1000, вы увидите 6000 (2 * 30 *)1000) записей на партию.

Может быть полезно также включить spark.streaming.backpressure.enabled для более адаптивной скорости, основанной на времени, затраченном на обработку партии.

Подробнее опод капотом рабочая кафка прямого потока

...