Принос от Prithviraj Bose
В този блог ще обсъдим концепцията за прозорци на трансформациите на Apache Spark.
Какво представлява преобразуването на състоянието?
Spark streaming използва микро партидна архитектура, при която входящите данни се групират в микропакети, наречени Discretized Streams (DStreams), която също служи като основна абстракция на програмирането. DStreams вътрешно разполагат с еластични разпределени набори от данни (RDD) и в резултат на тази стандартна RDD трансформация и действия може да се направи.
При стрийминг, ако имаме случай на употреба за проследяване на данни по партиди, тогава се нуждаем от DStreams с пълна държава.
Например можем да проследим взаимодействието на потребител в даден уебсайт по време на потребителската сесия или да проследим определен хеш-маркер в Twitter и да видим кои потребители по света говорят за това.
Видове трансформация на състоянието.
Държавните DStreams са два вида - проследяване на прозорци и проследяване на пълна сесия.
За проследяване на състоянието всички входящи данни трябва да се трансформират в двойки ключ-стойност, така че ключовите състояния да могат да се проследяват в различни партиди. Това е предпоставка.
Освен това трябва да дадем възможност и за контролна точка, концепция, която ще обсъдим в следващите блогове.
> Проследяване на прозорци
как да направите предупреждение в javascript -
В проследяването, базирано на прозорец, входящите партиди се групират във времеви интервали, т.е.групират партиди на всеки ‘x’ секунди. По-нататъшните изчисления на тези партиди се извършват с помощта на слайд интервали.
Например, ако интервалът на прозореца = 3 секунди и интервалът на плъзгане = 2 секунди, тогава всички входящи данни ще бъдат групирани в партиди на всеки 3 секунди и изчисленията на тези партиди ще се извършват на всеки 2 секунди. Като алтернатива можем да кажем, правете изчисления на всеки 2 секунди за партидите, пристигнали през последните 3 секунди.

В горната диаграма виждаме, че входящите партиди се групират на всеки 3 единици време (интервал на прозореца) и изчисленията се извършват на всеки 2 единици време (интервал на слайда).
Забележка: За разлика от Apache Flink, Apache Spark няма концепция за падащ прозорец, всички прозорци се плъзгат.
ПОЖАР
Популярен API за трансформации, базирани на прозорец, е
PairDStreamFunctions.reduceByKeyAndWindow .
Има няколко претоварени версии на този API, нека видим тази, която има най-много параметри. След това обяснение останалите претоварени версии на този API трябва да се обясняват.
Връща: Трансформираният DStream [(K, V)]
reduceFunc : Асоциативната функция за намаляване.
invReduceFunc : Обратната на горната функция за намаляване. Това е необходимо за ефективно изчисляване на входящи и изходящи партиди. С помощта на тази функция стойността на изходящите партиди се приспада от натрупаната стойност на горната функция за намаляване. Например, ако изчисляваме сумата от входящите стойности за съответните ключове, тогава за изходящите партиди ще извадим стойностите за съответните ключове (при условие, че те присъстват в текущата партида иначе се игнорират).
windowDraration : Единици време за групиране на партидите, това трябва да е кратно на интервала на партидата.
slideDuration : Мерни единици за изчисление, това трябва да е кратно на интервала на партидата. дялове : Разделителят, който да се използва за съхранение на получения DStream. За повече информация относно разделянето прочетете това .
filterFunc : Функция за филтриране на изтеклите двойки ключ-стойност, т.е., например, ако не получим актуализация за ключ за известно време, може да пожелаем да го премахнем.
Ето програма за преброяване на думите, идващи от поток на сокет. Използвахме претоварената версия на горната функция с интервал на прозореца от 4 секунди и интервал на плъзгане от 2 секунди.
В следващия си блог ще пиша за пълно проследяване на сесии и контролни точки.
Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас.
Подобни публикации: