Memòria cau distribuïda amb variables difoses: Apache Spark

Aquesta entrada al bloc tracta de la memòria cau distribuïda amb variables d’emissió i us permet començar a distribuir eficaçment valors grans a la programació Spark.



Aportat per Prithviraj Bose



Les variables de difusió són útils quan cal col·locar conjunts de dades grans als executors. En aquest bloc s’explica com començar.

Què són les variables de difusió?



Les variables de difusió a Apache Spark són un mecanisme per compartir variables entre executors que estan pensades per ser de només lectura. Sense variables de transmissió, aquestes variables s'enviarien a cada executor per a cada transformació i acció, cosa que pot provocar despeses de xarxa. No obstant això, amb les variables de difusió, s’envien una vegada a tots els executors i es guarden a la memòria cau per a futures referències.

Variables de difusió Cas d'ús

Imagineu que, mentre fem una transformació, hem de buscar una gran taula de codis postals / codis PIN. Aquí, ni és factible enviar la taula de cerca gran cada vegada als executors, ni podem consultar la base de dades cada vegada. La solució hauria de ser convertir aquesta taula de cerca en variables de transmissió i Spark la guardarà en memòria cau a tots els executors per a futures referències.

Prenem un exemple senzill per entendre els conceptes anteriors. Tenim un fitxer CSV amb noms de països i les seves capitals. Es pot trobar el fitxer CSV aquí .



CSV-file-distributed-caching

Suposant que estem processant dades demogràfiques de països i que necessitem obtenir la capital d’aquest país. En aquest cas, podem convertir les dades del fitxer CSV a una variable de difusió.

Primer carreguem el fitxer CSV en un mapa, si es troba el fitxer, el mètode torna Alguns (països) sinó torna Cap .

què és la sobrecàrrega de mètodes i la substitució de mètodes

Després de carregar correctament el fitxer CSV, convertim el mapa en una variable de difusió i el fem servir al nostre programa.

Al fragment de codi anterior, carreguem el fitxer CSV a un mapa països llavors convertim aquest mapa a una variable de difusió paysCache . Posteriorment, creem un RDD a partir de les claus de països . A la searchCountryDetails mètode que cerquem tots els països començant per una lletra definida per l'usuari i el mètode retorna un RDD de països juntament amb les seves capitals. La variable d’emissió countrieCache s’utilitza per buscar les capitals.
D’aquesta manera no hem d’enviar totes les dades CSV cada vegada que necessitem fer cerques.

El codi del fitxer searchCountryDetails es mostra a continuació,

Es pot trobar tot el codi font aquí .

Tens alguna pregunta? Esmenteu-los a la secció de comentaris i us respondrem.

diferència entre llançaments i llançaments java

Articles Relacionats:

S'han explicat els acumuladors d'espurna

Apache Spark combineByKey explicat