Kibirkščių akumuliatoriai paaiškinti: „Apache Spark“



Šis „Apache Spark“ tinklaraštis išsamiai paaiškina „Spark“ akumuliatorius. Sužinokite „Spark“ akumuliatoriaus naudojimo pavyzdžius. Kibirkščių akumuliatoriai yra kaip „Hadoop Mapreduce“ skaitikliai.

Prisidėjo Prithviraj Bose

Čia yra tinklaraštis apie dalykus, kuriuos turite žinoti apie „Spark“ akumuliatorius.Su Tai yra pagrindinis įgūdis, kurį medžioja dauguma IT verbuotojų, jo augimas ir paklausa pramonėje nuo pat jo atsiradimo buvo eksponentinė.





Kas yra akumuliatoriai?

Akumuliatoriai yra kintamieji, naudojami kaupiant informaciją vykdytojams. Pvz., Ši informacija gali būti susijusi su duomenimis ar API diagnostika, pvz., Kiek įrašų sugadinta arba kiek kartų buvo iškviesta tam tikra bibliotekos API.

Norėdami suprasti, kodėl mums reikia akumuliatorių, pažiūrėkime nedidelį pavyzdį.



rūšiuoti skaičius c ++

Štai įsivaizduojamas parduotuvių tinklo aplink centrinį Kolkatos regioną sandorių žurnalas.

logs-Spark-accumulators

Yra 4 laukai,

1 laukas -> Miestas



2 laukas -> vietovė

3 laukas -> Parduodamos prekės kategorija

4 laukas -> Parduotos prekės vertė

Tačiau žurnalai gali būti sugadinti. Pavyzdžiui, antroji eilutė yra tuščia eilutė, ketvirtoje eilutėje pateikiamos kai kurios tinklo problemos, o galiausiai paskutinėje eilutėje rodoma nulinė pardavimo vertė (kas negali atsitikti!).

Mes galime naudoti kaupiklius analizuodami operacijų žurnalą, kad sužinotume tuščių žurnalų (tuščių eilučių) skaičių, tinklo gedimų skaičių, bet kurio produkto neturinčią kategoriją ar net nulinio pardavimo registravimo skaičių. Visą žurnalo pavyzdį galite rasti čia .
Akumuliatoriai taikomi bet kuriai operacijai,
1. Komutacinis -> f (x, y) = f (y, x) ir
2. Asociatyvus -> f (f (x, y), z) = f (f (x, z), y) = f (f (y, z), x)
Pavyzdžiui, suma ir maks funkcijos atitinka pirmiau nurodytas sąlygas, o vidutinis neturi.

sas programavimo įvado pagrindinės sąvokos

Kodėl verta naudoti kibirkščių akumuliatorius?

Kodėl mums reikia akumuliatorių ir kodėl gi ne tik naudoti kintamuosius, kaip parodyta žemiau esančiame kode.

Pirmiau minėto kodo problema yra ta, kad kai tvarkyklė spausdina kintamąjį blankLines jo vertė bus lygi nuliui. Taip yra todėl, kad kai „Spark“ išsiunčia šį kodą kiekvienam vykdytojui, kintamieji tampa šio vykdytojo vietiniai ir jo atnaujinta vertė nėra persiunčiama atgal vairuotojui. Norėdami išvengti šios problemos, turime išspręsti blankLines akumuliatorius toks, kad visi šio kintamojo atnaujinimai kiekviename vykdytuve būtų perduodami atgal vairuotojui. Taigi aukščiau pateiktas kodas turėtų būti parašytas taip,

Tai garantuoja, kad akumuliatorius blankLines yra atnaujinamas kiekvienam vykdytojui ir atnaujinimai persiunčiami atgal į tvarkyklę.

Mes galime įdiegti kitus tinklo klaidų, nulinės pardavimo vertės ir pan. Skaitiklius. Visą šaltinio kodą kartu su kitų skaitiklių įgyvendinimu galite rasti čia .

Žmonės, susipažinę su „Hadoop Map-Reduce“, pastebės, kad „Spark“ akumuliatoriai yra panašūs į „Hadoop“ „Map-Reduce“ skaitiklius.

Įspėjimai

Naudojant akumuliatorius yra keletas įspėjimų, kuriuos mes, kaip programuotojai, turime žinoti,

  1. Skaičiavimai viduje transformacijos yra vertinami tingiai, todėl nebent veiksmas atsitinka RDD transformacijos nėra vykdomi. Dėl to akumuliatoriai, naudojami viduje, veikia kaip žemėlapis () arba filtras() nebus įvykdyta, nebent kai kurie veiksmas nutikti RDD.
  2. „Spark“ garantuoja atnaujinti akumuliatorius viduje veiksmai tik vieną kartą . Taigi, net jei užduotis bus paleista iš naujo ir giminė bus perskaičiuota, kaupikliai bus atnaujinti tik vieną kartą.
  3. „Spark“ tai negarantuoja transformacijos . Taigi, jei užduotis bus paleista iš naujo ir giminė bus perskaičiuota, yra nepageidaujamo šalutinio poveikio tikimybė, kai akumuliatoriai bus atnaujinti daugiau nei vieną kartą.

Norėdami būti saugūs, akumuliatorius visada naudokite TIK veiksmų metu.
Kodas čia parodo paprastą, bet veiksmingą pavyzdį, kaip to pasiekti.
Norėdami gauti daugiau informacijos apie akumuliatorius, skaitykite tai .

Turite mums klausimą? Paminėkite juos komentarų skiltyje ir mes susisieksime su jumis.

Susijusios žinutės:

„Apache Spark combByKey“ paaiškinta