Nadesłane przez Prithviraj Bose
Na tym blogu omówimy koncepcję okienkową transformacji stanowych Apache Spark.
Co to jest stanowa transformacja?
Przesyłanie strumieniowe Spark wykorzystuje architekturę mikro-wsadową, w której przychodzące dane są grupowane w mikro partie zwane strumieniami dyskretnymi (DStreams), które służą również jako podstawowa abstrakcja programowania. DStreamy wewnętrznie posiadają Resilient Distributed Datasets (RDD) i w wyniku tego standardowego RDD można wykonywać transformacje i akcje.
W przypadku przesyłania strumieniowego, jeśli mamy przypadek użycia do śledzenia danych w partiach, potrzebujemy pełnostanowych DStreams.
Na przykład możemy śledzić interakcję użytkownika w witrynie podczas sesji użytkownika lub możemy śledzić określony hashtag na Twitterze w czasie i zobaczyć, którzy użytkownicy na całym świecie o nim mówią.
Rodzaje transformacji państwowej.
DStreams oparte na stanach są dwojakiego rodzaju - śledzenie oparte na oknach i śledzenie pełnej sesji.
W celu śledzenia stanowego wszystkie przychodzące dane powinny zostać przekształcone w pary klucz-wartość, tak aby stany kluczy można było śledzić w partiach. To jest warunek wstępny.
Dalej powinniśmy również włączyć punkty kontrolne, koncepcję, którą omówimy w kolejnych blogach.
> Śledzenie oparte na oknach
W śledzeniu opartym na oknach przychodzące partie są grupowane w przedziałach czasowych, tj. Grupowanie partii co „x” sekund. Dalsze obliczenia tych partii są wykonywane przy użyciu odstępów między slajdami.
Na przykład, jeśli interwał okna = 3 sekundy i odstęp między slajdami = 2 sekundy, wszystkie przychodzące dane będą grupowane w partie co 3 sekundy, a obliczenia w tych partiach będą wykonywane co 2 sekundy. Alternatywnie możemy powiedzieć, że wykonuj obliczenia co 2 sekundy na partiach, które dotarły w ciągu ostatnich 3 sekund.

Na powyższym diagramie widzimy, że przychodzące partie są grupowane co 3 jednostki czasu (interwał okna), a obliczenia są wykonywane co 2 jednostki czasu (odstęp między slajdami).
Uwaga: w przeciwieństwie do Apache Flink, Apache Spark nie ma koncepcji obracającego się okna, wszystkie okna się przesuwają.
OGIEŃ
Popularnym interfejsem API do przekształceń opartych na oknach jest
PairDStreamFunctions.reduceByKeyAndWindow .
Istnieje kilka przeciążonych wersji tego interfejsu API, zobaczmy tę, która ma największą liczbę parametrów. Po tym wyjaśnieniu reszta przeciążonych wersji tego interfejsu API powinna być oczywista.
Zwroty: przekształcony strumień DStream [(K, V)]
java znajdź największą liczbę na liście
zredukowaćFunc : Asocjacyjna funkcja redukcji.
invReduceFunc : Odwrotność powyższej funkcji redukcji. Jest to wymagane do wydajnego obliczania partii przychodzących i wychodzących. Za pomocą tej funkcji wartość paczek wychodzących jest odejmowana od skumulowanej wartości powyższej funkcji zmniejszania. Na przykład, jeśli obliczamy sumę wartości przychodzących dla odpowiednich kluczy, to dla partii wychodzących odejmiemy wartości dla odpowiednich kluczy (pod warunkiem, że są obecne w bieżącej partii, w przeciwnym razie zignorujemy).
windowDuration : Jednostki czasu grupowania partii, powinna to być wielokrotność odstępu między partiami.
slideDuration : Jednostki czasu do obliczeń, powinna to być wielokrotność interwału partii. partycje : Partycjoner używany do przechowywania wynikowego DStream. Aby uzyskać więcej informacji na temat partycjonowania, przeczytaj to .
filterFunc : Funkcja odfiltrowująca wygasłe pary klucz-wartość, tj. Jeśli na przykład nie otrzymamy aktualizacji klucza przez jakiś czas, możemy chcieć go usunąć.
Tutaj jest program policzyć słowa pochodzące ze strumienia gniazda. Użyliśmy przeciążonej wersji powyższej funkcji z interwałem okna wynoszącym 4 sekundy i odstępem między slajdami wynoszącym 2 sekundy.
Na kolejnym blogu napiszę o pełnym śledzeniu sesji i punktach kontrolnych.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.
Powiązane posty: