Преобразования с отслеживанием состояния с использованием окон в потоковой передаче Spark



В этом сообщении блога обсуждаются преобразования с отслеживанием состояния с использованием окон в Spark Streaming. Узнайте все об отслеживании данных по пакетам с помощью D-Stream с отслеживанием состояния.

Предоставлено Притхвираджем Босом

В этом блоге мы обсудим оконную концепцию преобразований с отслеживанием состояния Apache Spark.





Что такое преобразование с сохранением состояния?

В потоковой передаче Spark используется архитектура микропакетов, в которой входящие данные группируются в микропакеты, называемые дискретными потоками (DStreams), которые также служат базовой абстракцией программирования. Внутренние потоки DStream имеют устойчивые распределенные наборы данных (RDD), и в результате этого могут выполняться стандартные преобразования и действия RDD.



В потоковой передаче, если у нас есть вариант использования для отслеживания данных по пакетам, нам нужны DStreams с сохранением состояния.

Например, мы можем отслеживать взаимодействие пользователя с веб-сайтом во время пользовательского сеанса, или мы можем отслеживать определенный хэштег Twitter во времени и видеть, какие пользователи во всем мире говорят об этом.

Типы государственной трансформации.



Статистические потоки DStream бывают двух типов - отслеживание на основе окон и отслеживание полного сеанса.

Для отслеживания состояния все входящие данные должны быть преобразованы в пары «ключ-значение», чтобы можно было отслеживать состояния ключей в пакетах. Это предварительное условие.

Далее мы также должны включить контрольные точки - концепцию, которую мы обсудим в следующих блогах.

> Отслеживание на основе окна

При оконном отслеживании входящие пакеты группируются по временным интервалам, то есть группируют пакеты каждые «x» секунд. Дальнейшие вычисления для этих партий выполняются с использованием интервалов слайдов.

Например, если интервал окна = 3 секунды и интервал слайда = 2 секунды, то все входящие данные будут группироваться в пакеты каждые 3 секунды, а вычисления для этих пакетов будут происходить каждые 2 секунды. В качестве альтернативы мы можем сказать, что каждые 2 секунды выполняйте вычисления для пакетов, полученных за последние 3 секунды.

spark-streaming-dstream-window

На приведенной выше диаграмме мы видим, что входящие пакеты группируются каждые 3 единицы времени (интервал окна), а вычисления выполняются каждые 2 единицы времени (интервал слайда).
Примечание. В отличие от Apache Flink, Apache Spark не имеет концепции переворачивающегося окна, все окна скользят.

использование сканера в java

ОГОНЬ

Популярным API для оконных преобразований является

PairDStreamFunctions.reduceByKeyAndWindow .

Существует несколько перегруженных версий этого API, давайте посмотрим на ту, которая имеет наибольшее количество параметров. После этого объяснения остальные перегруженные версии этого API должны быть понятными.

Возвращает: преобразованный DStream [(K, V)]

reduceFunc : Функция ассоциативного сокращения.

invReduceFunc : Функция, обратная приведенной выше функции уменьшения. Это необходимо для эффективного расчета входящих и исходящих пакетов. С помощью этой функции стоимость исходящих пакетов вычитается из накопленного значения вышеупомянутой функции сокращения. Например, если мы вычисляем сумму входящих значений для соответствующих ключей, то для исходящих пакетов мы вычтем значения для соответствующих ключей (при условии, что они присутствуют в текущем пакете, иначе игнорируйте).

windowDuration : Единицы времени для группировки партий, они должны быть кратны интервалу между партиями.

slideDuration : Единицы времени для вычисления, это должно быть кратно интервалу пакета. перегородки : Секционер, используемый для хранения результирующего DStream. Для получения дополнительной информации о разбиении прочтите этот .

filterFunc : Функция для фильтрации пар 'ключ-значение' с истекшим сроком действия. Например, если мы не получаем обновления для ключа какое-то время, мы можем захотеть его удалить.

Вот программа для подсчета слов, поступающих из потока сокета. Мы использовали перегруженную версию вышеупомянутой функции с интервалом окна 4 секунды и интервалом слайда 2 секунды.

В своем следующем блоге я напишу о полном отслеживании сеансов и контрольных точках.

Есть вопрос к нам? Пожалуйста, укажите это в комментариях, и мы свяжемся с вами.

Похожие сообщения:

Распределенное кэширование с широковещательными переменными