Distribuert caching med kringkastingsvariabler: Apache Spark



Dette blogginnlegget diskuterer distribuert caching med kringkastingsvariabler og får deg i gang med å distribuere store verdier effektivt i Spark-programmering.

Bidratt av Prithviraj Bose





Kringkastingsvariabler er nyttige når store datasett må caches i utførere. Denne bloggen forklarer hvordan du kommer i gang.

Hva er kringkastingsvariabler?



Kringkastingsvariabler i Apache Spark er en mekanisme for å dele variabler på tvers av utførere som er ment å være skrivebeskyttet. Uten kringkastingsvariabler vil disse variablene bli sendt til hver utfører for hver transformasjon og handling, og dette kan føre til nettverksomkostninger. Imidlertid, med kringkastingsvariabler, sendes de en gang til alle utførere og caches for fremtidig referanse.

Broadcast Variables Bruk sak

Tenk deg at mens vi gjør en transformasjon, må vi slå opp en stor tabell med postnummer / pin-kode. Her er det verken mulig å sende den store oppslagstabellen hver gang til utførerne, og vi kan heller ikke spørre databasen hver gang. Løsningen bør være å konvertere denne oppslagstabellen til en kringkastingsvariabel, og Spark vil cache den i hver utfører for fremtidig referanse.

La oss ta et enkelt eksempel for å forstå konseptene ovenfor. Vi har en CSV-fil med navn på land og hovedsteder. CSV-filen kan bli funnet her .



CSV-file-distributed-caching

Forutsatt at vi behandler demografiske data fra land, og vi må skaffe hovedstaden i det landet. I dette tilfellet kan vi konvertere dataene i CSV-filen til en kringkastingsvariabel.

Først laster vi inn CSV-filen på et kart. Hvis filen blir funnet, returnerer metoden Noen land) ellers kommer den tilbake Ingen .

Etter vellykket lasting av CSV-filen konverterer vi kartet til en kringkastingsvariabel og bruker det i vårt program.

I kodebiten ovenfor laster vi CSV-filen til et kart land så konverterer vi det kartet til en kringkastingsvariabel countryCache . Deretter oppretter vi en RDD fra tastene til land . I searchCountryDetails metoden søker vi etter alle landene som begynner med en brukerdefinert bokstav, og metoden returnerer en RDD av land sammen med deres hovedsteder. Kringkastingsvariabelen countrieCache brukes til å slå opp hovedstedene.
På denne måten trenger vi ikke sende hele CSV-data hver gang vi trenger å søke.

Koden for searchCountryDetails er vist nedenfor,

Hele kildekoden finner du her .

Har du et spørsmål til oss? Nevn dem i kommentarseksjonen, så kommer vi tilbake til deg.

konvertere dobbelt til int i java

Relaterte innlegg:

Gnistakkumulatorer forklart

Apache Spark combineByKey Explained