#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.
Я делаю что-то не так?