Tabellen mit mit Hive

Wahrscheinlich wissen Sie bereits, dass die Experten in relationalen Datenbank-Modellierung und Design der Regel einen großen Teil ihrer Zeit der Gestaltung normalisierte Datenbanken verbringen, oder Schemata. Datenbank Normalisierung ist eine Technik, die vor Datenverlust, Redundanz schützt und andere Anomalien wie Daten aktualisiert und abgerufen werden.

Die Experten folgen eine Reihe von Regeln zu einer normalisierten Datenbank zu gelangen, aber Regel 1 ist, dass Sie mit einem am Ende muss Gruppe von Tabellen. (Ein großer Tisch alle Ihre Daten zu speichern ist nicht normal -. Wortspiel beabsichtigt) Es gibt Ausnahmen, je nach Anwendungsfall, aber das Gesetz von vielen Tabellen wird in der Regel genau verfolgt, insbesondere für Datenbanken, die Transaktionen oder analytische Verarbeitung (Business Intelligence unterstützen, beispielsweise).

Wenn Sie beginnen, Ihre Daten abzufragen und zu analysieren, werden Tabellen auf den definierten Beziehungen zwischen ihnen verbunden basierten SQL verwenden - was bedeutet, dass die Datenträger, auf dem Server schließlich beschäftigt sind, wenn Sie Tabellen beginnen Beitritt, und beschäftigt Platten führen in der Regel zu einer langsameren Zeiten Benutzerantwort . Allerdings ist die gute Nachricht, dass RDBMS und EDW-Modelle sind so abgestimmt, um verbindet so schnell wie möglich zu machen.

Was hat das alles mit in Hive tritt zu tun? Nun, denken Sie daran, dass das zugrunde liegende Betriebssystem für Hive ist Apache Hadoop (Überraschung!): MapReduce ist der Motor für Tabellen verknüpft, und das Hadoop File System (HDFS) ist die zugrunde liegende Lagerung. Es ist alles eine gute Nachricht für den Benutzer, schaffen will, zu verwalten und zu analysieren, große Tabellen mit Hive.

Die mögliche Informationen zu entsperren, die in massiven Datenstrukturen versteckt ist spannend. Jedoch tritt in der Regel mit Hive nicht durchführen, so gut sie in der RDBMS / EDW Welt tun, so Erstanwender werden oft von der überrascht # 147-pokiness # 148- der Systemantwort.

Denken Sie daran, dass MapReduce und HDFS für Durchsatz optimiert mit großen Datenanalyse und dass in dieser Welt, Latenzen - Benutzerantwortzeiten, mit anderen Worten - sind in der Regel hoch. Hive ist für Batch-Stil analytische Verarbeitung konzipiert, nicht für die schnelle Online-Transaktionsverarbeitung. Benutzer, die die bestmögliche Leistung mit SQL auf Apache Hadoop wollen, müssen Lösungen zur Verfügung.

Halten Sie diese Dynamik im Auge, wenn Sie Tabellen verknüpfen mit Hive beginnen. Beachten Sie auch, dass Hive Architekten in der Regel ihre Datenbanken zu einem gewissen Grad denormalize, so dass weniger größere Tabellen aufweist, ist alltäglich. Deshalb komplexe Datentypen wie STRUCTs und ARRAYs vorgesehen. Sie können diese komplexen Datentypen verwenden viel mehr Daten in einer einzigen Tabelle zu packen.

Da Hive Tabelle liest und schreibt in der Regel über HDFS beinhalten sehr große Datenblöcke, die mehr Daten, die Sie zusammen in einer Tabelle verwalten kann, desto besser ist die Gesamtleistung.

Festplatten- und Netzwerkzugang ist viel langsamer als Speicherzugriff, so minimieren HDFS liest und so viel wie möglich schreibt.

Mit diesem Hintergrundinformationen im Auge, können Sie angehen Herstellung mit Hive verbindet. Glücklicherweise war die Hive-Entwickler-Community realistisch und verstanden, dass die Nutzer wollen würde und müssen Tabellen mit HiveQL zu verbinden. Dieses Wissen wird besonders wichtig, mit EDW Augmentation. Anwendungsfälle wie zum Beispiel # 147-abfragbaren # 148- Archive erfordern oft schließt sich für die Datenanalyse.

Hier ist ein Hive beitreten Beispiel Flugdatentabellen verwendet. Die Auflistung zeigt Ihnen, wie ein zu erstellen und anzeigen myflightinfo2007 Tisch und ein myflightinfo2008 Tabelle aus der größeren FlightInfo2007 und FlightInfo2008 Tabellen. Der Plan entlang war die CTAS erstellt verwenden myflightinfo2007 und myflightinfo2008 Tabellen veranschaulichen, wie Sie schließt sich in Hive durchführen.

Die Abbildung zeigt das Ergebnis einer inneren Verknüpfung mit dem myflightinfo2007 und myflightinfo2008 Tabellen, die die SQuirreL SQL-Client.

bild0.jpg

Hive unterstützt Equi-Joins, eine bestimmte Art von Verknüpfung, die nur Vergleiche auf Gleichheit in der Join-Prädikat verwendet. (ON m8.FlightNum = m7.FlightNum ist ein Beispiel für ein Equi-Join) Andere Komparatoren wie weniger als (lt;.) werden nicht unterstützt. Diese Einschränkung ist nur aufgrund von Einschränkungen der zugrunde liegenden MapReduce Motor. Darüber hinaus können Sie nicht verwenden ODER in dem AUF Klausel.

Die Abbildung zeigt das frühere Beispiel für die innere Verknüpfung und zwei andere Arten Hive verbinden. Beachten Sie, dass Sie die Ergebnisse einer inneren Verknüpfung durch die Prüfung des Inhalts der bestätigen kann, myflight2007 und myflight2008 Tabellen.

Die folgende Abbildung zeigt, wie eine innere Verknüpfung Werke ein Venn-Diagramm mit, falls Sie mit der Technik nicht vertraut sind. Die Grundidee ist hier, dass ein innerer kehrt die Datensätze verbinden, die zwischen zwei Tabellen übereinstimmen. So eine innere Verknüpfung ist eine perfekte Analyse-Tool, um zu bestimmen, welche Flüge sind die gleichen von JFK (New York) nach ORD (Chicago) im Juli 2007 und Juli 2008.

image1.jpg

Optimierung von Hive verbindet, ist ein heißes Thema in der Hive-Community. Weitere Informationen über die aktuellen Optimierungstechniken finden Sie in der Optimierung Seite auf die Join Hive Wiki.

Menü