Állapotbeli átalakulások a szikrázó közvetítéssel

Ez a blogbejegyzés az állapotszerű átalakításokat tárgyalja a Spark Streaming segítségével. Tudjon meg mindent a kötegelt adatok nyomon követéséről az állapotfüggő D-adatfolyamok használatával.

Közreműködött: Prithviraj Bose



Ebben a blogban megvitatjuk az Apache Spark állapotszerű átalakításainak ablakos koncepcióját.



Mi az állapotszerű átalakulás?

A Spark streaming egy mikro kötegelt architektúrát használ, ahol a beérkező adatokat diszkrétált adatfolyamoknak (DStreams) nevezett mikro kötegekbe csoportosítják, amelyek szintén alapvető programozási absztrakcióként szolgálnak. A DStream-ek belsőleg rendelkeznek rugalmassági elosztott adatkészlettel (RDD), és ennek eredményeként a RDD-átalakítások és műveletek elvégezhetők.



Streaming esetén, ha van felhasználási esetünk az adatok kötegenként történő követésére, akkor állapotfüggő DStreamekre van szükségünk.

Például nyomon követhetjük a felhasználó interakcióját egy webhelyen a felhasználói munkamenet során, vagy nyomon követhetünk egy adott twitter-hashtaget az idõ során, és láthatjuk, hogy a világszerte mely felhasználók beszélnek róla.

Az állam-teljes transzformáció típusai.



Az állapotfüggő DStream kétféle típusú - ablakalapú és teljes munkamenet-követés.

Az állapotkövetéshez az összes bejövő adatot kulcs-érték párokká kell átalakítani, hogy a kulcsállapotok kötegenként követhetők legyenek. Ez előfeltétel.

Ezenkívül engedélyeznünk kell az ellenőrzőpont-meghatározást, amelyet egy későbbi blogokban fogunk megvitatni.

> Ablak alapú követés

hogyan készítsen riasztást javascriptben

Ablakalapú nyomon követéskor a beérkező kötegek időintervallumok szerint vannak csoportosítva, azaz „x” másodpercenként csoportosítva. Ezeknek a kötegeknek a további kiszámítását diaintervallumok segítségével végezzük.

Például, ha az ablakintervallum = 3 mp és a diaintervallum = 2 mp, akkor az összes beérkező adat 3 másodpercenként csoportosítva lesz csoportosítva, és a kötegek számítása 2 másodpercenként történik. Alternatív megoldásként elmondhatjuk, hogy 2 másodpercenként végezzen számításokat az utolsó 3 másodpercben érkezett tételeken.

spark-streaming-dstream-window

A fenti diagramon azt látjuk, hogy a beérkező kötegek 3 időegységenként (ablak intervallum) vannak csoportosítva, és a számításokat 2 időegységenként (csúszásintervallum) végezzük.
Megjegyzés: Az Apache Flink-től eltérően az Apache Sparknak nincs fogalma az ablak bukásáról, az összes ablak csúszik.

TŰZ

Az ablakalapú transzformációk népszerű API-ja

PairDStreamFunctions.reduceByKeyAndWindow .

Ennek az API-nak több túlterhelt változata van, nézzük meg azt, amelyik rendelkezik a legtöbb paraméterrel. A magyarázat után ennek az API-nak a többi túlterhelt verziójának magától értetődőnek kell lennie.

Visszatér: A transzformált DStream [(K, V)]

reducFunc : Az asszociatív redukciós funkció.

invReduceFunc : A fentiek inverze csökkentik a függvényt. Erre a bejövő és kimenő kötegek hatékony kiszámításához van szükség. Ennek a függvénynek a segítségével a kimenő kötegek értéke levonásra kerül a fenti redukciós függvény összesített értékéből. Például, ha kiszámítjuk az adott kulcsok bejövő értékeinek összegét, akkor a kimenő kötegekre kivonjuk az adott kulcsok értékeit (feltéve, hogy azok az aktuális kötegben vannak, figyelmen kívül hagyják).

windowDuration : Időegységek a kötegek csoportosításához, ennek a kötegelt intervallum többszörösének kell lennie.

slideDuration : Időegységek a számításhoz, ennek a kötegelt intervallum többszörösének kell lennie. partíciók : A particionáló a kapott DStream tárolásához. További információkért olvassa el a particionálást ez .

filterFunc : Lejárt kulcs-érték párok kiszűrésére szolgáló funkció, azaz például, ha valamikor nem kapunk frissítést egy kulcshoz, akkor érdemes eltávolítani.

Itt van egy program hogy megszámolja a foglalatból érkező szavakat. A fenti függvény túlterhelt változatát használtuk 4 másodperces ablakintervallummal és 2mp-es diaintervallummal.

A következő blogomban a teljes munkamenet-követésről és az ellenőrzési pontokról fogok írni.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és mi kapcsolatba lépünk Önnel.

Kapcsolódó hozzászólások:

Elosztott gyorsítótárazás Broadcast változókkal