Tilanmuutokset ja peräkkäin kipinän suoratoistossa



Tässä blogikirjoituksessa käsitellään tilanmuutoksia Spark Streaming -sovelluksen kanssa. Opi kaikki erien tietojen seurannasta tilakohtaisten D-streamien avulla.

Lähettäjä Prithviraj Bose

Tässä blogissa keskustelemme Apache Sparkin tilanmuutosten raivokkaasta käsitteestä.





Mikä on tilallinen muutos?

Spark-suoratoisto käyttää mikro-eräarkkitehtuuria, jossa saapuvat tiedot ryhmitellään mikrokokonaisuuksiksi, nimeltään Discretized Streams (DStreams), jotka toimivat myös ohjelmoinnin perustoimintona. DStreameissa on sisäisesti joustavat hajautetut tietojoukot (RDD), ja tämän standardin seurauksena RDD-muunnokset ja toiminnot voidaan tehdä.



Suoratoistossa, jos meillä on käyttötapa tietojen seurantaan erissä, tarvitsemme tilakohtaisia ​​DStreameja.

Voimme esimerkiksi seurata käyttäjän vuorovaikutusta verkkosivustolla käyttäjäistunnon aikana tai seurata tiettyä twitter-hashtagia ajan mittaan ja nähdä, mitkä käyttäjät ympäri maailmaa puhuvat siitä.

Tyypilliset tilanmuutoksen tyypit.



Tilatiedot täyttäviä D-streameja on kahden tyyppisiä - ikkuna- ja täysistuntoseuranta.

Tilannekohtaista seurantaa varten kaikki saapuvat tiedot tulisi muuntaa avainarvopareiksi siten, että avaintiloja voidaan seurata erissä. Tämä on edellytys.

Lisäksi meidän tulisi sallia tarkistuspisteytys, käsite, josta keskustelemme myöhemmissä blogeissa.

> Ikkunapohjainen seuranta

Ikkunapohjaisessa seurannassa saapuvat erät ryhmitellään aikavälein, ts. Ryhmäerät x-sekunnin välein. Näiden erien lisälaskelmat tehdään käyttämällä diaväliä.

Esimerkiksi, jos ikkunaväli = 3 sekuntia ja diaväli = 2 sekuntia, kaikki saapuvat tiedot ryhmitellään erissä 3 sekunnin välein ja näiden erien laskelmat tapahtuvat 2 sekunnin välein. Vaihtoehtoisesti voimme sanoa, että tee laskelmat 2 sekunnin välein viimeisten 3 sekunnin aikana saapuneista eristä.

spark-streaming-dstream-window

Yllä olevasta kaaviosta näemme, että saapuvat erät ryhmitellään joka 3. aikayksikkö (ikkunaväli) ja laskelmat tehdään joka 2. aikayksikkö (diaväli).
Huomautus: Toisin kuin Apache Flink, Apache Sparkilla ei ole käsitystä romahtamisesta, kaikki ikkunat liukuvat.

ANTAA POTKUT

Suosittu sovellusliittymä ikkunapohjaisiin muunnoksiin on

PairDStreamFunctions.reduceByKeyAndWindow .

Tästä sovellusliittymästä on useita ylikuormitettuja versioita. Katsotaanpa sitä, jolla on eniten parametreja. Tämän selityksen jälkeen muiden tämän sovellusliittymän ylikuormitettujen versioiden pitäisi olla itsestään selviä.

Palauttaa: Muunnettu DStream [(K, V)]

reducFunc : Assosiatiivinen pelkistystoiminto.

invReduceFunc : Yllä olevan käänteinen vähennysfunktio. Tätä tarvitaan saapuvien ja lähtevien erien tehokkaaseen laskemiseen. Tämän toiminnon avulla lähtevien erien arvo vähennetään yllä mainitun vähennysfunktion kertyneestä arvosta. Esimerkiksi, jos laskemme vastaavien avainten saapuvien arvojen summan, sitten lähteville erille vähennämme vastaavien avainten arvot (jos ne ovat läsnä nykyisessä erässä, ohitetaan).

ikkunaKesto : Aikayksiköt erien ryhmittelemiseksi, tämän tulisi olla kerrannaiserä.

slideDuration : Laskennan aikayksiköt, tämän on oltava kerrannaiserä. osiot : Osioitin, jota käytetään tuloksena olevan DStreamin tallentamiseen. Lisätietoja osioinnista lue Tämä .

filterFunc : Toiminto suodattaa vanhentuneet avain-arvo-parit, esimerkiksi jos emme saa päivitystä avaimelle joskus, saatamme haluta poistaa sen.

Tässä on ohjelmoida laskea pistorasialta tulevat sanat. Olemme käyttäneet yllä olevan toiminnon ylikuormitettua versiota, jonka ikkuna-aika on 4 sekuntia ja diaväli 2 sekuntia.

Seuraavassa blogissani kirjoitan koko istunnon seurannasta ja tarkistusosoitteesta.

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.

Aiheeseen liittyvät julkaisut:

Hajautettu välimuisti lähetysmuuttujien kanssa

kuinka käyttää sas-ohjelmistoa