Hive bietet zusätzlich zum Hadoop-Dateisystem eine Abfragesprache vom Typ SQL für den ETL-Zweck.
Die Hive-Abfragesprache (HiveQL) bietet eine SQL-Umgebung in Hive für die Arbeit mit Tabellen, Datenbanken und Abfragen.
Wir können eine andere Art von Klauseln mit Hive verknüpfen, um verschiedene Arten von Datenmanipulationen und Abfragen durchzuführen. Für eine bessere Konnektivität mit verschiedenen Knoten außerhalb der Umgebung. HIVE bietet auch JDBC-Konnektivität.
Hive-Abfragen bieten die folgenden Funktionen:
- Datenmodellierung wie Erstellung von Datenbanken, Tabellen usw.
- ETL-Funktionen wie Extrahieren, Transformieren und Laden von Daten in Tabellen
- Joins zum Zusammenführen verschiedener Datentabellen
- Benutzerspezifische benutzerdefinierte Skripte zur Vereinfachung des Codes
- Schnelleres Abfrage-Tool über Hadoop
In diesem Artikel lernen Sie:
- Bestellung nach Anfrage
- Nach Abfrage gruppieren
- Sortieren nach
- Cluster By
- Verteilen durch
Tabelle in Hive erstellen
Bevor wir mit unserem Hauptthema für dieses Lernprogramm beginnen, erstellen wir zunächst eine Tabelle, um sie als Referenz für das folgende Lernprogramm zu verwenden.
Hier in diesem Tutorial erstellen wir die Tabelle "employee_guru" mit 6 Spalten.
Aus dem obigen Screenshot,
- Wir erstellen eine Tabelle "employee_guru" mit 6 Spaltenwerten wie ID, Name, Alter, Adresse, Gehalt, Abteilung, die zu den Mitarbeitern gehört, die in der Organisation "Guru" anwesend sind.
- Hier in diesem Schritt laden wir Daten in die Tabelle employee_guru. Die Daten, die wir laden werden, werden in der Datei Employees.txt abgelegt
Bestellung nach Anfrage:
Die ORDER BY-Syntax in HiveQL ähnelt der Syntax von ORDER BY in der SQL-Sprache.Sortieren nach ist die Klausel, die wir mit der Anweisung "SELECT" in Hive-Abfragen verwenden, um Daten zu sortieren. Order by-Klausel Verwenden Sie Spalten in Hive-Tabellen, um bestimmte Spaltenwerte zu sortieren, die mit Order by erwähnt wurden. Unabhängig vom Spaltennamen, für den wir die Reihenfolge nach Klausel definieren, wählt die Abfrage die Ergebnisse aus und zeigt sie in aufsteigender oder absteigender Reihenfolge der jeweiligen Spaltenwerte an.
Wenn die angegebene Reihenfolge nach Feld eine Zeichenfolge ist, wird das Ergebnis in lexikografischer Reihenfolge angezeigt. Am hinteren Ende muss es an einen einzelnen Reduzierer weitergegeben werden.
Aus dem obigen Screenshot können wir Folgendes beobachten
- Es ist die Abfrage, die für die Tabelle "employee_guru" mit der ORDER BY-Klausel ausgeführt wird, wobei Department den Spaltennamen ORDER BY definiert.
"Abteilung" ist eine Zeichenfolge, daher werden Ergebnisse basierend auf der lexikografischen Reihenfolge angezeigt.
- Dies ist die tatsächliche Ausgabe für die Abfrage. Wenn wir es richtig beobachten, können wir sehen, dass die Ergebnisse basierend auf der Abteilungsspalte wie ADMIN, Finanzen usw. angezeigt werden, damit orderQuery ausgeführt werden kann.
Abfrage:
SELECT * FROM employees_guru ORDER BY Department;
Nach Abfrage gruppieren:
Gruppieren nach Klausel Verwenden Sie Spalten in Hive-Tabellen, um bestimmte Spaltenwerte zu gruppieren, die mit der Gruppe nach erwähnt wurden. Unabhängig vom Spaltennamen definieren wir eine "groupby" -Klausel. Die Abfrage wählt die Ergebnisse aus und zeigt sie an, indem sie die bestimmten Spaltenwerte gruppiert.
Im folgenden Screenshot wird beispielsweise die Gesamtzahl der in jeder Abteilung anwesenden Mitarbeiter angezeigt. Hier haben wir "Abteilung" als Gruppe nach Wert.
Aus dem obigen Screenshot sehen wir Folgendes
- Dies ist die Abfrage, die für die Tabelle "employee_guru" mit der GROUP BY-Klausel ausgeführt wird, wobei die Abteilung den GROUP BY-Spaltennamen definiert.
- Die hier angezeigte Ausgabe ist der Abteilungsname, und die Mitarbeiter zählen in verschiedenen Abteilungen. Hier werden alle Mitarbeiter der jeweiligen Abteilung nach gruppiert und in den Ergebnissen angezeigt. Das Ergebnis ist also der Abteilungsname mit der Gesamtzahl der in jeder Abteilung anwesenden Mitarbeiter.
Abfrage:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Sortieren nach:
Die Sortierklausel wird für Spaltennamen von Hive-Tabellen ausgeführt, um die Ausgabe zu sortieren. Wir können DESC für die Sortierung der Reihenfolge in absteigender Reihenfolge und ASC für die aufsteigende Reihenfolge der Sortierung erwähnen.
Bei dieser Sortierung werden die Zeilen sortiert, bevor sie dem Reduzierer zugeführt werden. Das Sortieren nach hängt immer von den Spaltentypen ab.
Wenn beispielsweise Spaltentypen numerisch sind, wird sie in numerischer Reihenfolge sortiert. Wenn die Spaltentypen Zeichenfolgen sind, wird sie in lexikografischer Reihenfolge sortiert.
Aus dem obigen Screenshot können wir Folgendes beobachten:
- Es ist die Abfrage, die für die Tabelle "employee_guru" mit der SORT BY-Klausel ausgeführt wird, wobei "id" den Spaltennamen SORT BY definiert. Wir haben das Schlüsselwort DESC verwendet.
- Die angezeigte Ausgabe erfolgt also in absteigender Reihenfolge von "id".
Abfrage:
SELECT * from employees_guru SORT BY Id DESC;
Cluster von:
Cluster By wird als Alternative für Distribute BY- und Sort BY-Klauseln in Hive-QL verwendet.
Cluster BY-Klausel, die für in Hive vorhandene Tabellen verwendet wird. Hive verwendet die Spalten in Cluster by, um die Zeilen auf die Reduzierungen zu verteilen. Cluster BY-Spalten werden an die mehreren Reduzierer gesendet.
- Es stellt sicher, dass die Reihenfolge der Werte in mehreren Reduzierstücken sortiert wird
Beispiel: Die Klausel "Cluster By", die im Spaltennamen "Id" der Tabelle "employee_guru" angegeben ist. Die Ausgabe beim Ausführen dieser Abfrage gibt Ergebnisse an mehrere Reduzierer am Back-End. Als Frontend ist es jedoch eine alternative Klausel für Sortieren nach und Verteilen nach.
Dies ist eigentlich ein Back-End-Prozess, wenn wir eine Abfrage mit Sortieren nach, Gruppieren nach und Cluster nach im Hinblick auf das Map-Reduce-Framework ausführen. Wenn wir also Ergebnisse in mehreren Reduzierungen speichern möchten, entscheiden wir uns für Cluster By.
Aus dem obigen Screenshot erhalten wir die folgenden Beobachtungen:
- Es ist die Abfrage, die die CLUSTER BY-Klausel für den ID-Feldwert ausführt. Hier wird es eine Sortierung nach ID-Werten geben.
- Es zeigt die ID und Namen an, die in der Sortierung guru_employees sortiert nach sortiert sind
Abfrage:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Verteilen durch:
Distribute BY-Klausel, die für in Hive vorhandene Tabellen verwendet wird. Hive verwendet die Spalten in Verteilen durch, um die Zeilen unter den Reduzierungen zu verteilen. Alle Distribute BY-Spalten werden an denselben Reduzierer gesendet.
- Es stellt sicher, dass jeder der N Reduzierer nicht überlappende Säulenbereiche erhält
- Es sortiert nicht die Leistung jedes Reduzierers
Aus dem obigen Screenshot können wir Folgendes beobachten
- DISTRIBUTE BY Klausel, die für die ID der Tabelle "empoloyees_guru" ausgeführt wird
- Ausgabe mit ID, Name. Am hinteren Ende wird es zum gleichen Reduzierer gehen
Abfrage:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;