Максимальная скорость искровой потоковой передачи иногда нарушается

#configuration #spark-streaming #azure-eventhub

#конфигурация #искровая потоковая передача #azure-eventhub

Вопрос:

У меня есть простой процесс потоковой передачи Spark (1.6.1), который получает данные из центра событий Azure. Я экспериментирую с back pressure maxRate настройками и. Это моя конфигурация:

 spark.streaming.backpressure.enabled = true
spark.streaming.backpressure.pid.minRate = 900
spark.streaming.receiver.maxRate = 1000
 

Я использую два receivers , поэтому для каждого микропатча я бы ожидал 2000 сообщений (в общей сложности). В большинстве случаев это работает нормально (общее количество событий меньше или равно maxRate значению). Однако иногда у меня возникают всплески, которые нарушают maxRate значение.

Мой тестовый пример выглядит следующим образом:

 - send 10k events to azure event hub
- mock job/cluster downtime (no streaming job is running) 60sec delay
- start streaming job
- process events and assert events number smaller or equal to 2000
 

В этом тесте я могу заметить, что общее количество событий иногда превышает 2000, например: 2075, 2530, 2040. Это не значительно выше, и обработка не требует много времени, однако я все равно ожидаю, что общее количество событий на микропатч будет соответствовать maxRate значению. Кроме того, иногда общее количество событий меньше, чем backpressure.pid.minRate , например: 811, 631.

Я делаю что-то не так?