Szikra akkumulátorok magyarázata: Apache Spark



Ez az Apache Spark blog részletesen ismerteti a Spark akkumulátorokat. Ismerje meg a Spark akkumulátor használatát példákkal. A szikra akkumulátorok olyanok, mint a Hadoop Mapreduce számlálók.

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

Itt van egy blog azokról a dolgokról, amelyeket tudnia kell a Spark akkumulátorokról.Val vel mivel kulcsfontosságú készség, amelyre a legtöbb informatikai toborzó vadászik, növekedése és kereslete az iparban megalakulása óta exponenciális.





Mik azok az akkumulátorok?

Az akkumulátorok olyan változók, amelyeket a végrehajtók közötti információk összesítésére használnak. Ez az információ például adatokra vagy API-diagnózisra vonatkozhat, például hány rekord sérült, vagy hányszor hívták meg az adott könyvtár API-t.

Lássunk egy kis példát, hogy megértsük, miért van szükségünk akkumulátorokra.



linkelt lista a c programban

Itt van egy képzeletbeli napló a központi Kolkata régió körüli üzletlánc tranzakcióiról.

logs-Spark-accumulators

4 mező van,

1. mező -> Város



2. mező -> Helység

3. mező -> Az eladott cikk kategóriája

4. mező -> Az eladott tétel értéke

A naplók azonban megsérülhetnek. Például a második sor üres sor, a negyedik sor néhány hálózati problémáról számol be, végül az utolsó sor nulla értékesítési értéket mutat (ami nem történhet meg!).

Az akkumulátorok segítségével elemezhetjük a tranzakciós naplót, hogy megtudjuk az üres naplók (üres sorok) számát, a hálózat meghibásodásának számát, bármely olyan terméket, amelynek nincs kategóriája, vagy akár a nullás eladások számát. A teljes naplóminta megtalálható itt .
Az akkumulátorok minden olyan műveletre alkalmazhatók,
1. Kommutatív -> f (x, y) = f (y, x) , és
2. Asszociatív -> f (f (x, y), z) = f (f (x, z), y) = f (f (y, z), x)
Például, összeg és max funkciók megfelelnek a fenti feltételeknek, míg átlagos nem.

mi a javascript módszer

Miért érdemes használni a Spark akkumulátorokat?

Most miért van szükségünk akkumulátorokra, és miért nem csak az alábbi kódban bemutatott változókat használjuk?

A fenti kóddal az a probléma, hogy amikor az illesztőprogram kinyomtatja a változót blankLines értéke nulla lesz. Ennek az az oka, hogy amikor a Spark ezt a kódot minden végrehajtóhoz eljuttatja, akkor a változók lokálissá válnak az adott végrehajtó számára, és a frissített értéke nem kerül vissza az illesztőprogramba. A probléma elkerülése érdekében meg kell tennünk blankLines egy olyan akkumulátort, amely a változó összes frissítését minden végrehajtóban visszaadja az illesztőprogramnak. Tehát a fenti kódot úgy kell írni,

Ez garantálja, hogy az akkumulátor blankLines minden végrehajtón frissül, és a frissítéseket visszaküldik az illesztőprogramnak.

Más számlálókat is megvalósíthatunk hálózati hibák vagy nulla értékesítési érték stb. Esetén. A teljes forráskód a többi számláló megvalósításával együtt megtalálható itt .

A Hadoop Map-Reduce-t ismerő emberek észreveszik, hogy a Spark akkumulátorai hasonlóak a Hadoop Map-Reduce számlálóihoz.

Figyelmeztetések

Az akkumulátorok használatakor vannak olyan figyelmeztetések, amelyekkel nekünk, programozóknak tisztában kell lennünk,

  1. Számítások belül átalakulások lustán értékeljük, tehát ha egy akció az RDD-n történik átalakulások nem hajtják végre. Ennek eredményeként a belső akkumulátorok olyan funkciókkal rendelkeznek, mint a térkép() vagy szűrő() kivégzik, hacsak nem akció az RDD-n történnek.
  2. A Spark garantálja az akkumulátorok frissítését belül cselekvések csak egyszer . Tehát akkor is, ha egy feladatot újraindítanak, és a vonalat újraszámítják, az akkumulátorok csak egyszer frissülnek.
  3. A Spark ezt nem garantálja átalakulások . Tehát, ha egy feladatot újraindítanak, és a vonalat újraszámítják, akkor fennáll a nemkívánatos mellékhatások esélye, amikor az akkumulátorokat többször frissítik.

A biztonság kedvéért mindig CSAK a műveletek során használjon akkumulátorokat.
A kód itt egyszerű, de hatékony példát mutat be ennek elérésére.
Az akkumulátorokkal kapcsolatos további információkért olvassa el ez .

Van egy kérdésünk? Említse meg őket a megjegyzés rovatban, és kapcsolatba lépünk Önnel.

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

Apache Spark combByKey magyarázat