Video: HDInsight: Fast Interactive Queries with Hive on LLAP | Azure Friday 2024
Sie wissen wahrscheinlich bereits, dass Experten in relationalen Datenbank-Modellierung und Design in der Regel viel Zeit mit dem Entwerfen von normalisierten Datenbanken oder Schemas verbringen. Die Datenbank -Normalisierung ist eine Technik, die vor Datenverlust, Redundanz und anderen Anomalien schützt, wenn Daten aktualisiert und abgerufen werden. Die Experten befolgen eine Reihe von Regeln, um zu einer normalisierten Datenbank zu gelangen, aber Regel 1 ist, dass Sie mit einer
Gruppe Tabellen enden müssen. (Eine große Tabelle, die alle Ihre Daten speichert, ist nicht normal - Wortspiel beabsichtigt.) Es gibt Ausnahmen, abhängig vom Anwendungsfall, aber das Gesetz vieler Tabellen wird im Allgemeinen genau befolgt, besonders für Datenbanken, die Transaktionen oder analytische Verarbeitung unterstützen (Business Intelligence, beispielsweise).
Was hat das alles mit Joins in Hive zu tun? Denken Sie daran, dass das zugrunde liegende Betriebssystem für Hive ist (Überraschung!) Apache Hadoop: MapReduce ist die Engine zum Beitreten von Tabellen, und das Hadoop-Dateisystem (HDFS) ist der zugrunde liegende Speicher. Das sind gute Nachrichten für den Benutzer, der große Tabellen mit Hive erstellen, verwalten und analysieren möchte.
Denken Sie daran, dass MapReduce und HDFS für den Durchsatz mit Big Data-Analysen optimiert sind und dass
Latenzzeiten - also die Reaktionszeiten der Benutzer - in der Regel hoch sind. Hive wurde für die analytische Verarbeitung im Batch-Stil entwickelt, nicht für die schnelle Online-Transaktionsverarbeitung. Benutzer, die die bestmögliche Leistung mit SQL auf Apache Hadoop wünschen, haben Lösungen zur Verfügung.
Da Hive-Tabellen über HDFS lesen und schreiben, sind in der Regel sehr große Datenblöcke erforderlich. Je mehr Daten Sie insgesamt in einer Tabelle verwalten können, desto besser ist die Gesamtleistung.
Der Festplatten- und Netzwerkzugriff ist viel langsamer als der Speicherzugriff. Daher sollten Sie das Lesen und Schreiben von HDFS so gering wie möglich halten.
Mit diesen Hintergrundinformationen können Sie Joins mit Hive in Angriff nehmen. Glücklicherweise war die Hive-Entwicklergemeinschaft realistisch und verstand, dass Benutzer Tabellen mit HiveQL verbinden wollen und müssen. Dieses Wissen wird bei der EDW-Augmentation besonders wichtig. Anwendungsfälle wie "abfragbare" Archive erfordern häufig Joins zur Datenanalyse.
Hier ist ein Hive-Join-Beispiel mit Flugdatentabellen. Die Auflistung zeigt Ihnen, wie Sie eine Tabelle myflightinfo2007 und eine Tabelle myflightinfo2008 aus den größeren Tabellen FlightInfo2007 und FlightInfo2008 erstellen und anzeigen. Der Plan bestand darin, die von CTAS erstellten Tabellen myflightinfo2007 und myflightinfo2008 zu verwenden, um zu veranschaulichen, wie Sie Joins in Hive ausführen können.
Die Abbildung zeigt das Ergebnis eines inneren Joins mit den Tabellen myflightinfo2007 und myflightinfo2008 unter Verwendung des SQL-Clients SQuirreL.
Hive unterstützt
equi-joins, einen bestimmten Join-Typ, der nur Gleichheitsvergleiche im Join-Prädikat verwendet. (Auf m8. FlightNum = m7. FlightNum ist ein Beispiel für einen Equi-Join.) Andere Komparatoren wie Less Than (<) werden nicht unterstützt. Diese Einschränkung ist nur auf Einschränkungen der zugrunde liegenden MapReduce-Engine zurückzuführen. Außerdem können Sie OR nicht in der ON-Klausel verwenden. Die Abbildung veranschaulicht das frühere Beispiel des inneren Joins und zwei andere Hive-Join-Typen. Beachten Sie, dass Sie die Ergebnisse eines inneren Joins überprüfen können, indem Sie den Inhalt der Tabellen myflight2007 und myflight2008 überprüfen.
Die folgende Abbildung zeigt, wie ein Inner Join mit einem Venn-Diagramm funktioniert, falls Sie mit der Technik nicht vertraut sind. Die grundlegende Idee hierbei ist, dass ein Inner Join die Datensätze zurückgibt, die zwischen zwei Tabellen übereinstimmen. Ein innerer Join ist also ein perfektes Analyse-Tool, um zu bestimmen, welche Flüge von JFK (New York) nach ORD (Chicago) im Juli 2007 und Juli 2008 gleich sind.
Optimierung von Hive-Joins ist ein heißes Thema in der Hive-Community.. Weitere Informationen zu aktuellen Optimierungstechniken finden Sie auf der Seite Join Optimization im Hive-Wiki.