Was ist HiveQL (Hive Query Language)?
Hive bietet eine CLI zum Schreiben von Hive-Abfragen mit Hive Query Language (HiveQL). Im Allgemeinen ähnelt die HQL-Syntax der SQL-Syntax, mit der die meisten Datenanalysten vertraut sind.
Die von SQL inspirierte Sprache von Hive unterscheidet den Benutzer von der Komplexität der Map Reduce-Programmierung. Es verwendet vertraute Konzepte aus der relationalen Datenbankwelt wie Tabellen, Zeilen, Spalten und Schemas, um das Lernen zu erleichtern.
Die meisten Interaktionen finden in der Regel über eine Befehlszeilenschnittstelle (Command Line Interface, CLI) statt. Hive bietet eine CLI zum Schreiben von Hive-Abfragen mit Hive Query Language (Hive-QL).
Im Allgemeinen ähnelt die HiveQL-Syntax der SQL-Syntax, mit der die meisten Datenanalysten vertraut sind. Hive unterstützt vier Dateiformate: TEXTFILE, SEQUENCEFILE, ORC und RCFILE (Record Columnar File).
- Für die Speicherung von Einzelbenutzer-Metadaten verwendet Hive die Derby-Datenbank und
- Für Mehrbenutzer-Metadaten oder gemeinsam genutzte Metadaten verwendet Hive MYSQL
Eingebaute Operatoren
Hive bietet integrierte Operatoren für Datenoperationen, die in den im Hive-Warehouse vorhandenen Tabellen implementiert werden können.
Diese Operatoren werden für mathematische Operationen an Operanden verwendet und geben einen bestimmten Wert gemäß der angewendeten Logik zurück.
Arten von eingebauten Operatoren in HIVE sind:
- Vergleichsoperatoren
- Rechenzeichen
- Logische Operatoren
- Operatoren für komplexe Typen
- Komplexe Konstruktoren
Vergleichsoperatoren:
Wir verwenden relationale Operatoren für Beziehungsvergleiche zwischen zwei Operanden.
- Operatoren wie gleich, nicht gleich, kleiner als, größer als ... usw.
- Die Operandentypen sind alle Zahlentypen in diesen Operatoren.
In der folgenden Tabelle finden Sie Details zu relationalen Operatoren und deren Verwendung.
Eingebauter Bediener | Beschreibung | Operand |
X = Y. | TRUE, wenn Ausdruck X dem Ausdruck Y entspricht. Andernfalls FALSE. | Es werden alle primitiven Typen verwendet |
X! = Y. | TRUE, wenn Ausdruck X nicht Ausdruck Y entspricht. Andernfalls FALSE. | Es werden alle primitiven Typen verwendet |
X TRUE, wenn Ausdruck X kleiner als Ausdruck Y ist. Andernfalls FALSE. | Es werden alle primitiven Typen verwendet |
|
X <= Y. | TRUE, wenn Ausdruck X kleiner oder gleich Ausdruck Y ist. Andernfalls FALSE. | Es werden alle primitiven Typen verwendet |
X> Y. | TRUE, wenn Ausdruck X größer als Ausdruck Y ist. Andernfalls FALSE. | Es werden alle primitiven Typen verwendet |
X> = Y. | TRUE, wenn Ausdruck X größer oder gleich Ausdruck Y ist. Andernfalls FALSE. | Es werden alle primitiven Typen verwendet |
X IST NULL | TRUE, wenn Ausdruck X NULL ergibt, andernfalls FALSE. | Es dauert alle Arten |
X IST NICHT NULL | FALSE Wenn Ausdruck X NULL ergibt, andernfalls TRUE. | Es dauert alle Arten |
X WIE Y. | TRUE Wenn das Zeichenfolgenmuster X mit Y übereinstimmt, andernfalls FALSE. | Nimmt nur Strings |
X RLIKE Y. | NULL, wenn X oder Y NULL ist, TRUE, wenn eine Teilzeichenfolge von X mit dem regulären Java-Ausdruck Y übereinstimmt, andernfalls FALSE. | Nimmt nur Strings |
X REGEXP Y. | Gleich wie RLIKE. | Nimmt nur Strings |
Arithmetische Operatoren :
Wir verwenden arithmetische Operatoren, um arithmetische Operationen an Operanden durchzuführen
- Arithmetische Operationen wie Addition, Subtraktion, Multiplikation und Division zwischen Operanden verwenden wir diese Operatoren.
- Die Operandentypen sind in diesen Operatoren alle Zahlentypen
Beispielbeispiel:
2 + 3 ergibt Ergebnis 5.
In diesem Beispiel ist '+' der Operator und 2 und 3 sind Operanden. Der Rückgabewert ist 5
Die folgende Tabelle enthält Details zu arithmetischen Operatoren
Eingebauter Bediener | Beschreibung | Operand |
X + Y. | Es wird die Ausgabe des Hinzufügens von X- und Y-Wert zurückgegeben. | Es werden alle Nummerntypen verwendet |
X - Y. | Es wird die Ausgabe des Subtrahierens von Y vom X-Wert zurückgegeben. | Es werden alle Nummerntypen verwendet |
X * Y. | Es wird die Ausgabe der Multiplikation von X- und Y-Werten zurückgegeben. | Es werden alle Nummerntypen verwendet |
X / Y. | Es wird die Ausgabe der Division von Y von X zurückgegeben. | Es werden alle Nummerntypen verwendet |
X% Y. | Der Rest, der sich aus der Division von X durch Y ergibt, wird zurückgegeben. | Es werden alle Nummerntypen verwendet |
X & Y. | Es wird die Ausgabe von bitweisem UND von X und Y zurückgegeben. | Es werden alle Nummerntypen verwendet |
X | Y. | Es wird die Ausgabe von bitweisem ODER von X und Y zurückgegeben. | Es werden alle Nummerntypen verwendet |
X Y. | Es wird die Ausgabe von bitweisem XOR von X und Y zurückgegeben. | Es werden alle Nummerntypen verwendet |
~ X. | Es wird die Ausgabe von bitweisem NICHT von X zurückgegeben. | Es werden alle Nummerntypen verwendet |
Logische Operatoren:
Wir verwenden logische Operatoren, um logische Operationen an Operanden auszuführen
- Logische Operationen wie UND, ODER, NICHT zwischen Operanden verwenden wir diese Operatoren.
- Die Operandentypen sind in diesen Operatoren alle vom Typ BOOLEAN
Die folgende Tabelle enthält Details zu logischen Operatoren
Betreiber | Beschreibung | Operanden |
X UND Y. | TRUE, wenn sowohl X als auch Y TRUE sind, andernfalls FALSE. | Nur boolesche Typen |
X && Y. | Wie X UND Y, aber hier verwenden wir das Symbol && | Nur boolesche Typen |
X ODER Y. | TRUE, wenn entweder X oder Y oder beide TRUE sind, andernfalls FALSE. | Nur boolesche Typen |
X || Y. | Wie X ODER Y, aber hier verwenden wir || Symbol | Nur boolesche Typen |
NICHT X. | TRUE wenn X FALSE ist, andernfalls FALSE. | Nur boolesche Typen |
! X. | Gleich wie NICHT X, aber hier verwenden wir! Symbol | Nur boolesche Typen |
Operatoren für komplexe Typen:
In der folgenden Tabelle finden Sie Details zu Operatoren für komplexe Typen. Dies sind Operatoren, die einen anderen Mechanismus für den Zugriff auf Elemente in komplexen Typen bereitstellen.
Betreiber | Operanden | Beschreibung |
Ein] | A ist ein Array und n ist ein ganzzahliger Typ | Es wird das n-te Element im Array A zurückgegeben. Das erste Element hat den Index 0 |
M [Taste] | M ist eine Karte | Es werden die Werte zurückgegeben, die zum Schlüssel in der Karte gehören |
Komplexe Konstruktoren:
Die folgende Tabelle enthält Details zu Konstruktoren vom Typ Komplex. Es werden Instanzen für komplexe Datentypen erstellt. Hierbei handelt es sich um komplexe Datentypen wie Array-, Map- und Struct-Typen in Hive.
In diesem Abschnitt werden die Operationen beschrieben, die für Konstruktoren vom Typ Komplex ausgeführt werden.
Betreiber | Operanden | Beschreibung |
Array | (val1, val2,…) | Es wird ein Array mit den angegebenen Elementen wie val1, val2 erstellt |
Create_ union | (tag, val1, val2,…) | Es wird ein Vereinigungstyp mit den Werten erstellt, die vom Tag-Parameter erwähnt werden |
Karte | (Schlüssel1, Wert1, Schlüssel2, Wert2,…) | Es wird eine Karte mit den in Operanden angegebenen Schlüssel / Wert-Paaren erstellt |
Named_struct | (name1, val1, name2, val2,…) | Es wird eine Struktur mit den angegebenen Feldnamen und Werten erstellt, die in Operanden angegeben sind |
STRUKT | (val1, val2, val3,…) | Erstellt eine Struktur mit den angegebenen Feldwerten. Strukturfeldnamen sind col1, col2 ,. |
Zusammenfassung:
Hive bietet einige integrierte Funktionen und Operatoren zum Bearbeiten der im Hive-Lager gespeicherten Daten. Hive ähnelt der SQL-Sprache, die alle Arten von Datenoperationen und Abfragen von Tabellen und Datenbanken unterstützt.