In diesem Blog werden wir darüber diskutieren Map Side Join und seine Vorteile gegenüber dem normalen Join-Betrieb in Bienenstock .Dies ist ein wichtiges Konzept, das Sie lernen müssen, um Ihr Konzept umzusetzen .Aber bevor wir davon erfahren, sollten wir zuerst das Konzept von verstehen 'Beitreten' und was intern passiert, wenn wir den Join-In durchführen Bienenstock .
Beitreten ist eine Klausel, die die Datensätze von zwei Tabellen (oder Datensätzen) kombiniert.
Angenommen, wir haben zwei Tabellen A und B. Wenn wir eine Verknüpfungsoperation für sie ausführen, werden die Datensätze zurückgegeben, die die Kombination aller Spalten von A und B sind.
Lassen Sie uns nun die Funktionalität der normalen Verknüpfung anhand eines Beispiels verstehen.
Immer wenn wir eine Verknüpfungsoperation anwenden, wird der Job einer Map Reduce-Aufgabe zugewiesen, die aus zwei Phasen besteht: a ‘Kartenphase ' und ein ' Stufe reduzieren ’. Die Aufgabe eines Mappers während der Map Stage ist es, 'lesen' die Daten aus Join-Tabellen und bis 'Rückkehr' das ‘Join Key’ und ‘Join value’ Paar in eine Zwischendatei. Im Shuffle-Stadium wird diese Zwischendatei dann sortiert und zusammengeführt. Die Aufgabe des Reduzierers während der Reduktionsphase besteht darin, dieses sortierte Ergebnis als Eingabe zu verwenden und die Verbindungsaufgabe abzuschließen.
Die kartenseitige Verknüpfung ähnelt einer Verknüpfung, die gesamte Aufgabe wird jedoch nur vom Mapper ausgeführt.
Der Map-Side-Join eignet sich hauptsächlich für kleine Tabellen, um die Aufgabe zu optimieren.
Wie optimiert der kartenseitige Join die Aufgabe?
Angenommen, wir haben zwei Tabellen, von denen eine eine kleine Tabelle ist. Wenn wir eine Map Reduce-Aufgabe senden, wird vor der ursprünglichen Join Map Map Reduce-Aufgabe eine lokale Map Reduce-Aufgabe erstellt, die Daten der kleinen Tabelle aus HDFS liest und in einer speicherinternen Hash-Tabelle speichert. Nach dem Lesen wird die speicherinterne Hash-Tabelle in eine Hash-Tabellendatei serialisiert.
Scannerklasse im Java-Beispiel
In der nächsten Phase Wenn die ursprüngliche Join-Map-Reduce-Task ausgeführt wird, werden die Daten in der Hash-Tabellendatei in den verteilten Hadoop-Cache verschoben, der diese Dateien auf der lokalen Festplatte jedes Mapper auffüllt. So können alle Mapper diese persistente Hash-Tabellendatei wieder in den Speicher laden und die Join-Arbeit wie zuvor ausführen. Der Ausführungsablauf des optimierten Map-Joins ist in der folgenden Abbildung dargestellt. Nach der Optimierung muss die kleine Tabelle nur einmal gelesen werden. Auch wenn mehrere Mapper auf demselben Computer ausgeführt werden, muss der verteilte Cache nur eine Kopie der Hash-Tabellendatei auf diesen Computer übertragen.
Vorteile der Verwendung von Map Side Join:
- Map-Side-Join hilft bei der Minimierung der Kosten, die beim Sortieren und Zusammenführen im Internet anfallen Mischen und reduzieren Stufen.
- Map-Side-Join hilft auch bei der Verbesserung der Leistung der Aufgabe, indem die Zeit zum Beenden der Aufgabe verkürzt wird.
Nachteile der kartenseitigen Verknüpfung:
- Der Map-Side-Join ist nur dann ausreichend, wenn eine der Tabellen, für die Sie einen Map-Side-Join ausführen, klein genug ist, um in den Speicher zu passen. Daher ist es nicht geeignet, eine map-seitige Verknüpfung für die Tabellen durchzuführen, bei denen es sich um große Datenmengen handelt.
Einfaches Beispiel für Map Reduce Joins:
Lassen Sie uns zwei Tabellen erstellen:
- Emp : enthält Details zu einem Mitarbeiter wie den Namen des Mitarbeiters, die Mitarbeiter-ID und die Abteilung, zu der er gehört.
- Abteilung: enthält die Details wie den Namen der Abteilung, die Abteilungs-ID usw.
Erstellen Sie zwei Eingabedateien wie in der folgenden Abbildung gezeigt, um die Daten in die erstellten Tabellen zu laden.
employee.txt
dept.txt
Laden wir nun die Daten in die Tabellen.
wie man doppelt zu int wirft
Lassen Sie uns das durchführen Kartenseite Beitreten auf den beiden Tabellen, um die Liste der Abteilungen zu extrahieren, in denen jeder Mitarbeiter arbeitet.
Hier die zweite Tischabteilung ist ein kleiner Tisch. Denken Sie daran, dass die Anzahl der Abteilungen immer geringer ist als die Anzahl der Mitarbeiter in einer Organisation.
Führen wir nun dieselbe Aufgabe mit Hilfe des normalen Joins auf der reduzierten Seite aus.
Während Sie beide Joins ausführen, können Sie die beiden Unterschiede feststellen:
umgekehrte Ziffern einer ganzzahligen Python
Der Map-Reduce-Join hat den Job in kürzerer Zeit abgeschlossen als der normale Join.
Der Map-Reduce-Join hat seinen Job ohne die Hilfe eines Reduzierers abgeschlossen, während der normale Join diesen Job mit Hilfe eines Reduzierers ausgeführt hat.
Daher, Kartenseitiger Join ist die beste Wahl, wenn eine der Tabellen klein genug ist, um in den Speicher zu passen und den Auftrag in kurzer Zeit abzuschließen.
Im Echtzeitumgebung Sie werden Datensätze mit einer großen Datenmenge haben. Das Durchführen von Analysen und Abrufen der Daten ist daher zeitaufwändig, wenn einer der Datensätze kleiner ist. In solchen Fällen Kartenseitiger Join hilft, den Auftrag in kürzerer Zeit abzuschließen.
Es gab noch nie einen besseren Zeitpunkt, um Hadoop zu meistern! Beginnen Sie jetzt mit dem speziell kuratierten Big Data- und Hadoop-Kurs von Edureka.
Verweise:
https://www.facebook.com/notes/facebook-engineering/join-optimization-in-apache-hive/470667928919
Zusammenhängende Posts:
7 Möglichkeiten, wie Big Data-Schulungen Ihre Organisation verändern können