Überblick
- Kennenlernen 15 grundlegende Bienenstockabfragen einschließlich-
- Einfache Auswahl: Spaltenauswahl
- Einfache Auswahl: Zeilenauswahl
- Neue Spalten erstellen
- Hive-Funktionen
- Diese Liste ist keineswegs vollständig.. Fühlen Sie sich frei, mehr im Kommentarbereich hinzuzufügen.
Einführung
Mit Apache Hive-Abfragen, Sie können den verteilten Datenspeicher abfragen, einschließlich Hadoop-Daten.
Hive unterstützt ANSI SQL und atomare Transaktionen, konsistent, isoliert und langlebig (SÄURE). Um die Daten zu aktualisieren, Sie können die MERGE-Anweisung verwenden, die jetzt auch den ACID-Standards entspricht. Materialisierte Ansichten optimieren Abfragen basierend auf Zugriffsmustern. Hive unterstützt Tabellen bis zu 300 PB im optimierten Zeilenspaltenformat (ORC). Darüber hinaus werden andere Dateiformate unterstützt.
Sie können Tabellen erstellen, die wie eine traditionelle relationale Datenbank aussehen. Anerkannte Einfügeanweisungen verwenden, aktualisieren, SQL-Drop und Join zum Abfragen von Tabellendaten.
Insert-Anweisung schreibt Daten in Tabellen. Aktualisieren und entfernen Sie Anweisungen, ändern und entfernen Sie bereits in Hive geschriebene Werte. Kombinationsaussage vereinfacht Updates, Entfernen und Ändern von Datenerfassungsvorgängen basierend auf koexistierenden Tabellen.
Diese Anweisungen unterstützen automatisches Commit, das jede Anweisung als separate Transaktion behandelt und festschreibt, nachdem die SQL-Anweisung ausgeführt wurde. In diesem Beitrag, Wir werden einige grundlegende Hive-Abfragen und -Funktionen behandeln, die Ihnen ein grundlegendes Verständnis dafür vermitteln, wie Hive-Abfragen für verteilte Daten ausgeführt werden.
Inhaltsverzeichnis:
- Einfache Auswahl: Spaltenauswahl
- Einfache Auswahl: Zeilenauswahl
- Neue Spalten erstellen
- Hive-Funktionen
- Einfache Funktionen
- Aggregationen
- Datumsfunktionen
Einfache Auswahl: Spaltenauswahl
Ein Bienenstock, die Datenabfrage erfolgt über eine SELECT-Anweisung. Eine ausgewählte Anweisung hat 6 Schlüsselkomponenten;
- Spaltennamen AUSWÄHLEN
- FROM Tabellenname
- GROUP BY-Spaltennamen
- WO Bedingungen
- Bedingungen haben
- SORTIEREN nach Spaltennamen
In der Praxis, sehr wenige Abfragen enthalten all diese Klauseln, was viele Abfragen vereinfacht. Außerdem, Bedingungen in der WHERE-Klausel können sehr komplex sein und wenn Sie zwei oder mehr Tabellen miteinander verbinden müssen, mehr Klauseln werden benötigt (JOIN y ON).
Alle Namen der vorherigen Klauseln wurden aus Gründen der Übersichtlichkeit in Großbuchstaben geschrieben. HQL unterscheidet nicht zwischen Groß- und Kleinschreibung. Es ist auch nicht notwendig, jede Klausel in eine neue Zeile zu schreiben, aber es ist oft klarer, dies für alle außer den einfachsten Abfragen zu tun.
In dieser Lektion, Wir fangen mit dem sehr einfachen an und gehen zum komplexesten über.
Einfache Auswahl: Spaltenauswahl
Unter allen Hive-Abfragen, die einfachste Abfrage ist effektiv die, die den Inhalt der gesamten Tabelle zurückgibt.
AUSWÄHLEN * VON geog_all; ANSICHT ERSTELLEN [WENN NICHT EXISTIERT] [db_name.]view_name [(Spaltenname [COMMENT column_comment], ...) ]
Du übst besser und, allgemein, effizienter, die Spaltennamen, die zurückgegeben werden sollen, explizit aufzulisten.
SELECT Anonid, Kraftstoffarten, Eicheltyp VON geog_all;
Einfache Auswahl: Zeilenauswahl
Gleichzeitig Begrenzung der von einer Abfrage zurückgegebenen Spalten, zusätzlich können Sie die zurückgegebenen Zeilen begrenzen. Der einfachste Fall sagt anders aus, wie viele Zeilen mit der Limit-Klausel gewünscht werden.
SELECT Anonid, Kraftstoffarten, Eicheltyp VON geog_all GRENZE 10;
Dies ist nützlich, wenn Sie sich nur ein Bild davon machen möchten, wie die Daten aussehen. Wie gewöhnlich, Sie möchten die zurückgegebenen Zeilen basierend auf einigen Kriterien einschränken. Mit anderen Worten, bestimmte Werte oder Bereiche innerhalb einer oder mehrerer Spalten.
SELECT Anonid, Kraftstoffarten, Eicheltyp VON geog_all WO Kraftstoffarten = "Nur Elektro";
Der Ausdruck in der where-Klausel kann komplexer sein und mehr als eine Spalte enthalten.
SELECT Anonid, Kraftstoffarten, Eicheltyp VON geog_all WO Kraftstoffarten = "Nur Elektro" UND Eicheltyp > 42; SELECT Anonid, Kraftstoffarten, Eicheltyp VON geog_all WO Kraftstoffarten = "Nur Elektro" UND Eicheltyp > 42 UND Nüsse1 <> "--";
Beachten Sie, dass die in den Bedingungen der Where-Klausel verwendeten Spalten nicht in der Select-Klausel erscheinen müssen. Auch andere Operatoren können in der where-Klausel verwendet werden. Für komplexe Ausdrücke, Klammern können verwendet werden, um den Vorrang zu erzwingen.
SELECT Anonid, Kraftstoffarten, Eicheltyp, Nüsse1, ldz VON geog_all WO Kraftstoffarten = "Nur Elektro" UND acorn_type BETWEEN 42 UND 47 UND (Muttern1 NICHT IN ("KMU", "UKI") ODER ldz = "--");
Neue Spalten erstellen
Es ist möglich, neue Spalten in der Abfrageausgabe zu erstellen. Diese Spalten können aus Kombinationen anderer Spalten stammen, die Operatoren verwenden und / oder integrierte Hive-Funktionen.
SELECT Anonid, eprofileclass, Eicheltyp, (eprofileclass * Eicheltyp) AS multiplizieren, (eprofileclass + Eicheltyp) AS hinzugefügt VON edrp_geography_data b;
Eine vollständige Liste der in Hive verfügbaren Operatoren und Funktionen finden Sie im Dokumentation.
Wenn Sie eine neue Spalte erstellen, Es ist üblich, einen "Alias" anzugeben’ für die Spalte. Dies ist im Wesentlichen der Name, den Sie der neuen Spalte geben möchten. Der Alias wird unmittelbar nach dem Ausdruck angegeben, auf den er sich bezieht. Optional, Sie können der Übersichtlichkeit halber das Schlüsselwort AS hinzufügen. Wenn Sie keinen Alias für Ihre neuen Spalten angeben, Hive wird einen Namen für dich generieren.
Auch wenn der Begriff Alias für eine neue Spalte, die keinen natürlichen Namen hat, etwas seltsam erscheinen mag, alias' kann auch mit jeder vorhandenen Spalte verwendet werden, um einen aussagekräftigeren Namen in der Ausgabe bereitzustellen.
Tabellen können auch mit einem Alias versehen werden, Dies ist besonders häufig bei Join-Abfragen mit mehreren Tabellen der Fall, bei denen zwischen Spalten mit demselben Namen in verschiedenen Tabellen unterschieden werden muss. Gleichzeitig mit Operatoren neue Spalten erstellen, Außerdem gibt es viele integrierte Hive-Funktionen, die verwendet werden können.
Hive-Funktionen
Einfache Funktionen
Konkat kann verwendet werden, um Zeichenfolgen hinzuzufügen
SELECT Anonid, eichel_kategorie,
acorn_group,
Eicheltyp,
concat (eichel_kategorie, ",", acorn_group, ",", Eicheltyp) AS acorn_code
FROM geog_all;
substr kann verwendet werden, um einen Teil einer Zeichenfolge zu extrahieren
SELECT anon_id, fortgeschrittene Zeit, substr (fortgeschrittene Zeit, 1, 2) AS-Tag, substr (fortgeschrittene Zeit, 3, 3) AS Monat, substr (fortgeschrittene Zeit, 6, 2) AS-Jahr VON elec_c;
Längenbeispiele, Anleitung und Investition
SELECT Anonid, Eichelcode, Länge (Eichelcode), instr (Eichelcode, ',') AS a_catpos, instr (umkehren (Eichelcode), "," ) AS reverse_a_typepo
Wo Must-Have-Funktionen ineinander verschachtelt werden können und Typkonvertierungen
SELECT Anonid, substr (Eichelcode, 7, 2) AS ac_type_string, werfen (substr (Eichelcode, 7, 2) AS INT) AS ac_type_int, substr (Eichelcode, 7, 2) +1 AS ac_type_not_sure VON geog_all;
Aggregationen
Aggregatfunktionen werden verwendet, um eine Art mathematischer oder statistischer Berechnung für eine Gruppe von Zeilen durchzuführen. Die Zeilen in jeder Gruppe werden durch die unterschiedlichen Werte in einer bestimmten Spalte oder Spalten bestimmt. Eine Liste aller verfügbaren Funktionen ist in der Apache-Dokumentation aktiviert.
SELECT anon_id,
zählen (elkwh) AS total_row_count,
Summe (elkwh) AS total_period_usage,
Mindest (elkwh) AS min_period_usage,
durchschnittlich (elkwh) AS avg_period_usage,
max (elkwh) AS max_period_usage
FROM elec_c
GROUP BY anon_id;
Im obigen Beispiel, fünf Aggregationen wurden in einer einzigen anon_id-Spalte vorgenommen. Es ist möglich, in mehreren Spalten zu aggregieren, indem Sie sie sowohl in der select-Klausel als auch in der group by-Klausel angeben. Die Gruppierung erfolgt nach der Reihenfolge der Spalten, die in der Klausel Gruppieren nach aufgeführt sind. Was nicht erlaubt ist, ist die Angabe einer nicht aggregierten Spalte in der select-Klausel, die nicht in der group by-Klausel erwähnt wird.
SELECT anon_id,
substr (fortgeschrittene Zeit, 6, 2) AS-Lesung_Jahr,
zählen (elkwh) AS total_row_count,
Summe (elkwh) AS total_period_usage,
Mindest (elkwh) AS min_period_usage,
durchschnittlich (elkwh) AS avg_period_usage,
max (elkwh) AS max_period_usage
FROM elec_c
GROUP BY anon_id, substr (fortgeschrittene Zeit, 6, 2);
Leider, die group by-Klausel akzeptiert keine Aliasnamen..
SELECT anon_id,
substr (fortgeschrittene Zeit, 6, 2) AS-Lesung_Jahr,
zählen (elkwh) AS total_row_count,
Summe (elkwh) AS total_period_usage,
Mindest (elkwh) AS min_period_usage,
durchschnittlich (elkwh) AS avg_period_usage,
max (elkwh) AS max_period_usage
FROM elec_c
GROUP BY anon_id, substr (fortgeschrittene Zeit, 6, 2)
BESTELLEN VON anon_id, Lesejahr;
Aber die Order by-Klausel tut es.
Das Schlüsselwort Distinct stellt einen Satz einer eindeutigen Kombination von Spaltenwerten innerhalb einer Tabelle ohne Aggregation bereit..
SELECT DISTINCT eprofileclass, Kraftstoffarten VON geog_all;
Datumsfunktionen
In den Tabellen elec_c und gas_c, die Spalte "Datum/Uhrzeit", auch wenn es Informationen über die Art des Zeitstempels enthält, ist als String-Typ eingestellt. Die meiste Zeit, das kann ganz bequem sein. Trotz dieses, Es wird Zeiten geben, in denen wir die Wirbelsäule wirklich als Zeitstempel behandeln müssen. Das vielleicht offensichtlichste Beispiel ist, wenn Sie die Zeilen rechtzeitig nach der erweiterten Spalte sortieren müssen.
Hive bietet eine Reihe von datumsbezogenen Funktionen, die es Ihnen ermöglichen, Zeichenfolgen in Zeitstempel zu konvertieren und, zur selben Zeit, Teile des Zeitstempels extrahieren.
unix_timestamp gibt das aktuelle Datum und die Uhrzeit zurück, Als ganze Zahl!
from_unixtime nimmt eine ganze Zahl und wandelt sie in eine erkennbare Zeitstempelzeichenfolge um
SELECT unix_timestamp () AS aktuelle Zeit FROM probe_07 GRENZE 1; SELECT from_unixtime (unix_timestamp ()) AS aktuelle Zeit FROM probe_07 GRENZE 1;
Es gibt mehrere Datumsteilwerkzeuge, die die relevanten Teile einer Zeitstempelzeichenfolge extrahieren
SELECT anon_id, from_unixtime (UNIX_TIMESTAMP (Lesedatum, 'ddMMMyy')) AS proper_date, Jahr (from_unixtime (UNIX_TIMESTAMP (Lesedatum, 'ddMMMyy'))) AS full_year, Monat (from_unixtime (UNIX_TIMESTAMP (Lesedatum, 'ddMMMyy'))) AS full_month, Tag (from_unixtime (UNIX_TIMESTAMP (Lesedatum, 'ddMMMyy'))) AS full_day, last_day (from_unixtime (UNIX_TIMESTAMP (Lesedatum, 'ddMMMyy'))) AS last_day_of_month, date_add ( (from_unixtime (UNIX_TIMESTAMP (Lesedatum, 'ddMMMyy'))),10) AS added_days FROM elec_days_c ORDER BY proper_date;
Fazit:
In der Post, Wir behandeln einige grundlegende Hive-Funktionen und -Abfragen. Das Ausführen von Abfragen für verteilte Daten unterscheidet sich nicht wesentlich vom Ausführen von Abfragen in MySQL. Es folgen einige Beiträge, in denen wir erweiterte Funktionen und Abfragen behandeln.. Ich hoffe der Beitrag hat dir gefallen. Vergessen Sie nicht, Ihre Kommentare im Kommentarbereich unten zu hinterlassen.
Ich empfehle Ihnen, diese Beiträge zu lesen, um sich mit den Tools für Big Data vertraut zu machen:
Teilen Sie uns Ihre Gedanken in den Kommentaren unten mit..