Если задача по какой-либо причине завершается сбоем, новая задача выполняется с использованием вновь созданного потребителя Kafka по соображениям безопасности. При этом аннулируются все потребителей в пуле, имеющих одинаковый ключ кэширования, чтобы удалить потребителя, который использовался при неудачном выполнении. Потребители, которые используют любые другие задачи, не будут закрыты, но также будут признаны недействительными, когда они будут возвращены в пул. Наряду с потребителями, Spark объединяет записи, полученные из Kafka, отдельно, чтобы позволить потребителям Kafka сохранять состояние с точки зрения Spark и максимизировать эффективность объединения. Он использует тот же ключ кэширования, что и пул потребителей Kafka, но не использует пул Apache Commons.