Gedistribueerde caching met uitzendvariabelen: Apache Spark



Deze blogpost bespreekt gedistribueerde caching met uitzendvariabelen en helpt je op weg met het efficiënt distribueren van grote waarden in Spark-programmering.

Bijgedragen door Prithviraj Bose





Broadcast-variabelen zijn handig wanneer grote datasets in de cache moeten worden opgeslagen in uitvoerders. In deze blog wordt uitgelegd hoe u aan de slag gaat.

Wat zijn uitzendvariabelen?



Broadcast-variabelen in Apache Spark is een mechanisme voor het delen van variabelen tussen uitvoerders die alleen-lezen zijn bedoeld. Zonder uitzendvariabelen zouden deze variabelen voor elke transformatie en actie naar elke uitvoerder worden verzonden, en dit kan netwerkoverhead veroorzaken. Met uitzendvariabelen worden ze echter eenmaal naar alle uitvoerders verzonden en in de cache opgeslagen voor toekomstig gebruik.

bestandsafhandeling in Java-voorbeeld

Uitzendvariabelen Use case

Stel je voor dat we tijdens het uitvoeren van een transformatie een grote tabel met postcodes / pincodes moeten opzoeken. Hier is het niet haalbaar om de grote opzoektabel elke keer naar de uitvoerders te sturen, noch kunnen we de database elke keer opvragen. De oplossing zou moeten zijn om deze opzoektabel te converteren naar een uitzendingsvariabelen en Spark zal deze in elke uitvoerder cachen voor toekomstig gebruik.

Laten we een eenvoudig voorbeeld nemen om de bovenstaande concepten te begrijpen. We hebben een CSV-bestand met namen van landen en hun hoofdsteden. Het CSV-bestand is te vinden hier .



CSV-file-distributed-caching

Ervan uitgaande dat we demografische gegevens van landen verwerken en we de hoofdstad van dat land nodig hebben. In dit geval kunnen we de gegevens in het CSV-bestand converteren naar een uitzendvariabele.

Eerst laden we het CSV-bestand in een kaart, als het bestand wordt gevonden, keert de methode terug Sommige landen) anders keert het terug Geen .

Na het succesvol laden van het CSV-bestand converteren we de kaart naar een uitzendvariabele en gebruiken we deze in ons programma.

hoe je double cast naar int in java

In het bovenstaande codefragment laden we het CSV-bestand naar een kaart landen vervolgens converteren we die kaart naar een uitzendvariabele landenCache . Vervolgens maken we een RDD op basis van de sleutels van landen . In de searchCountryDetails methode zoeken we naar alle landen die beginnen met een door de gebruiker gedefinieerde letter en de methode retourneert een RDD van landen samen met hun hoofdsteden. De uitzendvariabele countrieCache wordt gebruikt om de hoofdletters op te zoeken.
Op deze manier hoeven we niet elke keer de volledige CSV-gegevens te verzenden als we moeten zoeken.

De code voor het searchCountryDetails wordt hieronder getoond,

wat is geserialiseerd in java

De hele broncode is te vinden hier .

Heeft u een vraag voor ons? Noem ze in het commentaargedeelte en we nemen contact met u op.

Gerelateerde berichten:

Vonkaccumulatoren uitgelegd

Apache Spark combByKey uitgelegd