Spark Streaming — это расширение основного Spark API. Он обеспечивает масштабируемую, высокопроизводительную и отказоустойчивую потоковую обработку потоков данных в реальном времени. Данные могут быть взяты из таких источников, как Kafka, Kinesis или TCP-сокеты, и обработаны с использованием сложных алгоритмов, выраженных через высокоуровневые функции, такие как map, reduce, join и window. Обработанные данные также могут быть отправлены в файловые системы, базы данных и живые информационные панели. Spark Streaming изначально поддерживает как пакетные, так и потоковые рабочие нагрузки.

Работа
Spark Streaming получает потоки входных данных в реальном времени и разделяет их на пакеты. Его ключевая абстракция — это дискретный поток, также известный как DStream, который представляет поток данных, разделенный на небольшие пакеты. DStreams построены на RDD, основной абстракции данных Spark, которая позволяет Spark Streaming легко интегрироваться с другими компонентами Spark, такими как MLlib и Spark SQL. Пакеты входных данных затем обрабатываются механизмом Spark для создания окончательного потока результатов в пакетах.

Возможности
Простота использования
Spark Streaming привносит API-интерфейс Apache Spark, интегрированный в язык, для потоковой обработки, который позволяет вам писать потоковые задания так же, как вы пишете пакетные задания. Он поддерживает Java, Scala и Python.
Отказоустойчивость
Spark Streaming восстанавливает потерянную работу и состояние оператора (например, скользящие окна) из коробки без каких-либо дополнительных действий. код с вашей стороны.
Встроенная интеграция
Интеграция Spark позволяет повторно использовать один и тот же код для пакетной обработки, присоединять потоки к историческим данным или выполнять специальные запросы на состояние потока. Кроме того, он предлагает встроенную интеграцию с расширенными библиотеками обработки (SQL, машинное обучение, обработка графиков).