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
для более адаптивной скорости, основанной на времени, затраченном на обработку партии.
Подробнее опод капотом рабочая кафка прямого потока