Hive-Abfragen | 15 Hive-Basisabfragen für Dateningenieure

Teilen auf Facebook
Teilen auf twittern
Teilen auf verlinktin
Teilen auf Telegramm
Teilen auf WhatsApp

Inhalt

Ü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

Apache-Hive-Abfragen

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..

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.