Distribueret caching med Broadcast-variabler: Apache Spark

Dette blogindlæg diskuterer distribueret caching med udsendelsesvariabler og får dig i gang med at distribuere store værdier effektivt i Spark-programmering.



hvordan man indstiller classpath i linux

Bidrag fra Prithviraj Bose



Broadcastvariabler er nyttige, når store datasæt skal caches i eksekutører. Denne blog forklarer, hvordan du kommer i gang.

Hvad er Broadcast-variabler?



Broadcastvariabler i Apache Spark er en mekanisme til deling af variabler på tværs af eksekutorer, der er beregnet til at være skrivebeskyttet. Uden udsendelsesvariabler sendes disse variabler til hver eksekutor for hver transformation og handling, og dette kan forårsage netværksomkostninger. Men med udsendelsesvariabler sendes de en gang til alle eksekutorer og cachelagres til fremtidig reference.

Broadcast-variabler Brug tilfældet

Forestil dig, at mens vi laver en transformation, skal vi slå op i en stor tabel med postnumre / pinkoder. Her er det hverken muligt at sende den store opslagstabel hver gang til eksekutørerne, og vi kan heller ikke spørge databasen hver gang. Løsningen skal være at konvertere denne opslagstabel til en udsendelsesvariabel, og Spark cache den i hver eksekutor til fremtidig reference.

Lad os tage et simpelt eksempel for at forstå ovenstående begreber. Vi har en CSV-fil med navne på lande og deres hovedstæder. CSV-filen kan findes her .



CSV-file-distributed-caching

hvad er forskellen mellem en abstrakt klasse og en grænseflade?

Forudsat at vi behandler demografiske data fra lande, og at vi er nødt til at få hovedstaden i dette land. I dette tilfælde kan vi konvertere dataene i CSV-filen til en udsendelsesvariabel.

Først indlæser vi CSV-filen på et kort. Hvis filen findes, vender metoden tilbage Nogle (lande) ellers vender det tilbage Ingen .

Efter vellykket indlæsning af CSV-filen konverterer vi kortet til en udsendelsesvariabel og bruger det i vores program.

I kodestykket ovenfor indlæser vi CSV-filen til et kort lande så konverterer vi kortet til en udsendelsesvariabel countryCache . Derefter opretter vi en RDD ud fra tasterne til lande . I searchCountryDetails metode søger vi efter alle lande startende med et brugerdefineret bogstav, og metoden returnerer en RDD af lande sammen med deres hovedstæder. Broadcast-variablen countrieCache bruges til at slå hovedstæderne op.
På denne måde behøver vi ikke sende hele CSV-data hver gang vi har brug for at søge.

Koden til searchCountryDetails er vist nedenfor,

Hele kildekoden kan findes her .

Har du et spørgsmål til os? Nævn dem i kommentarsektionen, så vender vi tilbage til dig.

Relaterede indlæg:

Gnistakkumulatorer forklaret

model view controller i java

Apache Spark combineByKey forklaret