Verteiltes Caching mit Broadcast-Variablen: Apache Spark

In diesem Blogbeitrag wird das verteilte Caching mit Broadcast-Variablen erläutert und Sie können mit der effizienten Verteilung großer Werte in der Spark-Programmierung beginnen.

Beitrag von Prithviraj Bose



Broadcast-Variablen sind nützlich, wenn große Datenmengen in Executoren zwischengespeichert werden müssen. In diesem Blog wird erklärt, wie Sie beginnen.

Was sind Broadcast-Variablen?

Broadcast-Variablen in Apache Spark sind ein Mechanismus zum Freigeben von Variablen zwischen Ausführenden, die schreibgeschützt sein sollen. Ohne Broadcast-Variablen würden diese Variablen bei jeder Transformation und Aktion an jeden Executor gesendet, was zu Netzwerk-Overhead führen kann. Bei Broadcast-Variablen werden sie jedoch einmal an alle Ausführenden gesendet und zur späteren Bezugnahme zwischengespeichert.

Vor- und Nachteile von Hacking

Anwendungsfall für Broadcast-Variablen

Stellen Sie sich vor, wir müssen während einer Transformation eine große Tabelle mit Postleitzahlen nachschlagen. Hier ist es weder möglich, die große Nachschlagetabelle jedes Mal an die Ausführenden zu senden, noch können wir die Datenbank jedes Mal abfragen. Die Lösung sollte darin bestehen, diese Nachschlagetabelle in Broadcast-Variablen zu konvertieren, und Spark speichert sie in jedem Executor zur späteren Bezugnahme zwischen.

Nehmen wir ein einfaches Beispiel, um die obigen Konzepte zu verstehen. Wir haben eine CSV-Datei mit Namen der Länder und ihrer Hauptstädte. Die CSV-Datei kann gefunden werden Hier .

CSV-file-distributed-caching

Angenommen, wir verarbeiten demografische Daten von Ländern und müssen die Hauptstadt dieses Landes erhalten. In diesem Fall können wir die Daten in der CSV-Datei in eine Broadcast-Variable konvertieren.

Zuerst laden wir die CSV-Datei in eine Map. Wenn die Datei gefunden wird, gibt die Methode zurück Einige Länder) sonst kehrt es zurück Keiner .

Nach erfolgreichem Laden der CSV-Datei konvertieren wir die Karte in eine Broadcast-Variable und verwenden sie in unserem Programm.

Im obigen Code-Snippet laden wir die CSV-Datei in eine Karte Länder dann konvertieren wir diese Karte in eine Broadcast-Variable LänderCache . Anschließend erstellen wir eine RDD aus den Schlüsseln von Länder . In dem searchCountryDetails Methode Wir suchen nach allen Ländern, beginnend mit einem benutzerdefinierten Buchstaben, und die Methode gibt eine RDD der Länder zusammen mit ihren Hauptstädten zurück. Die Broadcast-Variable countryieCache wird zum Nachschlagen der Hauptstädte verwendet.
Auf diese Weise müssen wir nicht jedes Mal, wenn wir suchen müssen, die gesamten CSV-Daten senden.

Der Code für die searchCountryDetails wird unten gezeigt,

Der gesamte Quellcode kann gefunden werden Hier .

Hast du eine Frage an uns? Erwähnen Sie sie im Kommentarbereich und wir werden uns bei Ihnen melden.

Zusammenhängende Posts:

Funkenakkumulatoren erklärt

Apache Spark kombinierenByKey erklärt