Stanovite transformacije s prozorom u iskrenju

Ovaj post na blogu raspravlja o transformacijama sa statusom prozora u programu Spark Streaming. Naučite sve o praćenju podataka u skupinama pomoću D-Streamova.

Doprinos Prithviraj Bose

Na ovom ćemo blogu raspraviti o konceptu proziranja državnih transformacija Apache Sparka.





Što je transformacija države?

Spark streaming koristi mikro batch arhitekturu gdje se dolazni podaci grupiraju u mikro serije pod nazivom Discretized Streams (DStreams) koja također služi kao osnovna programska apstrakcija. DStreamovi interno imaju elastične distribuirane skupove podataka (RDD) i kao rezultat ove standardne RDD transformacije i radnje mogu se izvršiti.



U streamingu, ako imamo slučaj korištenja za praćenje podataka po skupinama, tada nam trebaju DStreamovi u cijeloj državi.

Na primjer, možemo pratiti interakciju korisnika na web mjestu tijekom korisničke sesije ili možemo pratiti određeni hashtag s twitterom tijekom vremena i vidjeti koji korisnici širom svijeta o tome govore.

Vrste državne transformacije.



Državni DStreamovi su dvije vrste - praćenje zasnovano na prozorima i potpuno praćenje sesija.

Za praćenje stanja svi dolazni podaci trebaju se transformirati u parove ključ / vrijednost tako da se ključna stanja mogu pratiti u skupinama. To je preduvjet.

Dalje bismo trebali omogućiti i kontrolnu točku, koncept o kojem ćemo raspravljati u kasnijim blogovima.

> Praćenje na temelju prozora

U praćenju temeljem prozora dolazne se serije grupiraju u vremenskim intervalima, tj. Grupiraju serije svake 'x' sekunde. Daljnja izračunavanja na tim serijama vrše se pomoću slajd intervala.

Na primjer, ako je interval prozora = 3 sekunde, a interval slajda = 2 sekunde, tada će se svi dolazni podaci grupirati u serije svake 3 sekunde, a izračunavanja na tim serijama odvijat će se svake 2 sekunde. Alternativno možemo reći, radite izračune svake 2 sekunde na serijama koje su stigle u posljednje 3 sekunde.

spark-streaming-dstream-window

U gornjem dijagramu vidimo da se dolazne serije grupiraju svake 3 jedinice vremena (interval prozora), a proračuni se vrše svake 2 jedinice vremena (interval slajdova).
Napomena: Za razliku od Apache Flink, Apache Spark nema koncept prevrtanja prozora, svi prozori su klizni.

VATRA

Popularni API za transformacije temeljene na prozorima je

PairDStreamFunctions.reduceByKeyAndWindow .

Postoji nekoliko preopterećenih verzija ovog API-ja, pogledajmo onu koja ima najveći broj parametara. Nakon ovog objašnjenja, ostatak preopterećenih verzija ovog API-ja trebao bi biti samorazumljiv.

sortiraj niz c ++ silazno

Vraća: transformirani DStream [(K, V)]

smanjitiFunc : Asocijativna redukcijska funkcija.

invReduceFunc : Inverzna gore navedena funkcija smanjenja. To je potrebno za učinkovito računanje dolaznih i odlaznih serija. Pomoću ove funkcije vrijednost odlazećih serija oduzima se od akumulirane vrijednosti gore navedene funkcije smanjenja. Na primjer, ako izračunavamo zbroj ulaznih vrijednosti za odgovarajuće ključeve, tada ćemo za odlazne serije oduzeti vrijednosti za odgovarajuće ključeve (pod uvjetom da su prisutni u trenutnoj seriji, a zanemaruju se).

trajanje prozora : Jedinice vremena za grupiranje serija, ovo bi trebalo biti višekratnik intervala serije.

slideDuration : Jedinice vremena za izračunavanje, ovo bi trebalo biti višekratnik intervala serije. pregrade : Particioner za pohranu rezultirajućeg DStreama. Za više informacija o particioniranju pročitajte ovaj .

filterFunc : Funkcija filtriranja isteklih parova ključ / vrijednost, tj. Na primjer, ako ne dobijemo ažuriranje za ključ neko vrijeme, možda ćemo ga htjeti ukloniti.

Evo program za brojanje riječi koje dolaze iz struje utičnice. Koristili smo preopterećenu verziju gore navedene funkcije s intervalom prozora od 4 sekunde i kliznim intervalom od 2 sekunde.

U svom sljedećem blogu pisat ću o potpunom praćenju i provjeri sesija.

Imate pitanje za nas? Molimo spomenite to u odjeljku za komentare i javit ćemo vam se.

Vezane objave:

Distribuirano keširanje s emitiranim varijablama