Ответ 1
Фактически, в текущей реализации Spark Streaming и при настройке по умолчанию только работа активна (т.е. выполняется) в любой момент времени. Поэтому, если одна пакетная обработка занимает больше 10 секунд, тогда последующие пакетные задания останутся в очереди.
Это можно изменить с помощью экспериментального свойства Spark "spark.streaming.concurrentJobs", которое по умолчанию установлено в 1. Его в настоящее время не документировано (возможно, я должен добавить его).
Причина, по которой он установлен в 1, заключается в том, что параллельные задания могут потенциально привести к странному совместному использованию ресурсов и могут затруднить отладку того, достаточно ли ресурсов в системе для обработки поступающих данных достаточно быстро. С одной работой, выполняемой одновременно, легко видеть, что если время обработки партии < пакетный интервал, то система будет стабильной. Предоставлено, что это не может быть наиболее эффективным использованием ресурсов при определенных условиях. Мы определенно надеемся улучшить это в будущем.
В этом слайде meetup есть немного материала о внутренних компонентах Spark Streaming (извините, о бесстыдной саморекламе:)). Это может быть полезно для вас.