Sädeakud selgitatud: Apache Spark

See Apache Sparki ajaveeb selgitab Sparki akusid üksikasjalikult. Näidete abil saate teada Sparki aku kasutamist. Sädeakud on nagu Hadoop Mapreduce letid.

Kaastööd tegi Prithviraj Bose



Siin on ajaveeb asjadest, mida peate teadma Sparki akude kohta.Koos Olles põhioskus, mida enamik IT-värbajaid otsib, on selle kasv ja nõudlus tööstuses olnud algusest peale eksponentsiaalne.



Mis on akud?

Akumulaatorid on muutujad, mida kasutatakse täitjate vahel teabe koondamiseks. Näiteks võib see teave olla seotud andmete või API-diagnoosiga, näiteks mitu kirjet on rikutud või mitu korda konkreetset teegi API-d kutsuti.

Vaatame väikest näidet, et mõista, miks me akusid vajame.



Siin on Kolkata keskosas asuva kauplusteketi tehingute logiline tehingute logi.

logs-Spark-accumulators

Seal on 4 välja,

1. väli -> linn



2. väli -> asukoht

3. väli -> müüdud esemete kategooria

kuidas luua Java-s dünaamilist massiivi

4. väli -> müüdud toote väärtus

Kuid logisid saab rikutud. Näiteks teine ​​rida on tühi rida, neljas rida teatab mõnest võrguprobleemist ja lõpuks näitab viimane rida müügiväärtust null (mida ei saa juhtuda!).

Akumulaatorite abil saame tehingute logi analüüsida, et teada saada tühjade logide (tühjade ridade) arvu, võrgu ebaõnnestumiste arvu, kõiki tooteid, millel puudub kategooria, või isegi mitu korda registreeriti null müüki. Täieliku logi näidise leiate siin .
Akusid saab kasutada kõigi toimingute puhul, mis on
1. Kommutatiivne -> f (x, y) = f (y, x) ja
2. Assotsiatsioon -> f (f (x, y), z) = f (f (x, z), y) = f (f (y, z), x)
Näiteks, summa ja max funktsioonid vastavad ülaltoodud tingimustele keskmine ei ole.

Miks kasutada sädeakusid?

Miks on meil vaja akusid ja miks mitte kasutada lihtsalt muutujaid, nagu on näidatud allpool toodud koodis.

Ülaltoodud koodi probleem on selles, et kui draiver prindib muutuja blankLines selle väärtus on null. Seda seetõttu, et kui Spark saadab selle koodi igale täitjale, muutujad muutuvad selle täitja lokaalseks ja selle värskendatud väärtust draiverile tagasi ei edastata. Selle probleemi vältimiseks peame tegema blankLines selline aku, et kõik selle muutuja värskendused igas täituris edastatakse draiverile tagasi. Nii et ülaltoodud kood tuleks kirjutada järgmiselt:

See tagab, et aku blankLines värskendatakse kõigis täiturites ja värskendused edastatakse draiverile.

Saame rakendada muid loendureid võrguvigade või müügi nullväärtuse jne korral. Täieliku lähtekoodi koos teiste loendurite kasutamisega leiate siin .

Hadoop Map-Reduce'iga tuttavad inimesed märkavad, et Sparki akud sarnanevad Hadoopi Map-Reduce lettidega.

Hoiatused

Akude kasutamisel on mõned hoiatused, millest me programmeerijatena peame teadma,

  1. Arvutused sees teisendused hinnatakse laisalt, nii et kui tegevus juhtub RDD-l teisendused ei hukata. Selle tulemusel töötavad sees olevad akud näiteks kaart () või filter () harjumus saada hukata, kui mõned tegevus juhtuda RDD-l.
  2. Spark garanteerib akude värskendamise sees tegevused ainult üks kord . Nii et isegi kui ülesanne taaskäivitatakse ja liin arvutatakse uuesti, värskendatakse akumulaatoreid ainult üks kord.
  3. Spark ei taga seda teisendused . Nii et kui ülesannet taaskäivitatakse ja põlvkond ümber arvutatakse, on soovimatute kõrvaltoimete tõenäosus, kui akusid värskendatakse rohkem kui üks kord.

Turvalisuse tagamiseks kasutage akusid alati AINULT tegevuste sees.
Kood siin näitab lihtsat, kuid tõhusat näidet selle saavutamiseks.
Lisateavet akude kohta leiate artiklist seda .

Kas teil on meile küsimus? Mainige neid kommentaaride jaotises ja võtame teiega ühendust.

Seonduvad postitused:

Apache Spark-i kombineerimineByKey selgitatud