Einführung in die integrierten Funktionen von Hive
Funktionen sind so aufgebaut, dass sie unterschiedliche analytische Anforderungen und Operationen wie mathematische, logische, arithmetische und relationale Operationen für große Datasets und Tabellen ausführen. Funktionen werden verwendet, wenn ähnliche Operationen mehrmals verwendet werden müssen. In dieser fortschrittlichen BigData-Welt wird das Schreiben von MapReduce-Programmen schwierig, um große Datenmengen zu verarbeiten. Daher wurde im Oktober 2010 zusätzlich zu Apache Hadoop die Hive Query Language (HQL) eingeführt, mit deren Hilfe Abfragen, ähnlich wie in SQL, problemlos ausgeführt werden können. HQLs werden intern weiter in Mapreduce-Programme konvertiert, um die Ergebnisse zu erhalten. In diesem Thema werden die integrierten Funktionen von Hive erläutert.
Hive-Funktionen lassen sich grob in zwei Kategorien einteilen:
- Eingebaute Funktionen
- Benutzerdefinierte Funktionen
Eingebaute Funktionen von Hive
Integrierte Funktionen sind vordefiniert und können in Hive verwendet werden. Sie sind wie folgt kategorisiert:
1. String-Funktionen
Wird für String-Manipulationen und -Transformationen verwendet.
Funktionsname | Rückgabetyp | Beschreibung | Beispiel |
substr (string, int, int) | String | Es wird eine Zeichenfolge von der angegebenen Startposition bis zur angegebenen Länge zurückgegeben | substr ('Hive-Abfrage', 5, 5) ergibt 'Abfrage' |
rtrim (String X) | String | Es wird eine Zeichenfolge ohne rechts führende Leerzeichen zurückgegeben | rtrim ('Hallo') ergibt 'Hallo' |
ltrim (String X) | String | Es wird eine Zeichenfolge ohne führende Leerzeichen zurückgegeben | ltrim ('Hallo') ergibt 'Hallo' |
umkehren (Zeichenfolge X) | String | Es wird eine umgekehrte Zeichenfolge von X zurückgegeben | rückwärts ('hallo') ergibt 'olleh' |
rpad (string X, int, string) | String | Es gibt eine rechts gepolsterte Zeichenfolge mit 'pad' mit einer Länge von zurück | rpad ('Hello', 3, 'hi') ergibt 'Hello hi hi hi' |
lpad (Zeichenkette X, int, string) | String | Es gibt eine links gepolsterte Zeichenfolge mit 'pad' mit einer Länge von zurück | lpad ('Hallo', 3, 'Hallo') ergibt 'Hallo Hallo Hallo' |
split (Zeichenfolge X, Zeichenfolge pat) | Array | Nach dem Aufteilen der Zeichenfolge um das angegebene Muster wird ein Array von Zeichenfolgen zurückgegeben | Aufteilen ("A, B, C, D", ", ") führt zu ("A", "B", "C", "D") |
Länge (Zeichenfolge X) | Ganze Zahl | Es gibt die Länge der Zeichenfolge X zurück | Länge ('Bigdata') ergibt 7 |
concat (Zeichenfolge X, Zeichenfolge Y) | String | Es wird eine verkettete Zeichenfolge von X und Y zurückgegeben | concat ('Hello', 'World') ergibt 'HelloWorld' |
2. Mathematische Funktionen
Wird zum Anwenden mathematischer Operationen wie Runden, Decken, Boden usw. verwendet, anstatt UDFs zu erstellen.
Funktionsname | Rückgabetyp | Beschreibung | Beispiel |
rund (doppeltes X) | Doppelt | Es gibt den gerundeten Wert von X zurück | Runde (29.5) ergibt 30 |
rund (doppeltes X, Int d) | Doppelt | Es gibt den abgerundeten Wert von X auf d Dezimalstellen zurück | Runde (29.3456, 2) ergibt 29.34 |
ceil (doppeltes X) | Doppelt | Es wird ein minimaler BIGINT-Wert zurückgegeben, der gleich oder größer als X ist | ceil (20.5555) ergibt 21 |
Boden (Doppel-X) | Doppelt | Es wird ein maximaler BIGINT-Wert zurückgegeben, der gleich oder größer als X ist | ceil (20.5555) ergibt 20 |
rand () | Doppelt | Es werden Zufallszahlen zwischen 0 und 9 zurückgegeben | rand () ergibt rand (0-9) |
abs (doppeltes X) | Doppelt | Es gibt den absoluten Wert der Zahl X zurück | abs (-25) ergibt 25 |
pow (doppeltes X, doppeltes Y) | Doppelt | Der X-Wert wird zur Y-Potenz erhöht | pow (2, 3) ergibt 8 |
exp (doppeltes X) | Doppelt | Es gibt den Exponentenwert von X zurück | exp (2) ergibt 7.389 |
3. Bedingte Funktionen
Wird verwendet, um einen Ausdruck auf Wahr oder Falsch zu prüfen und entsprechende Ergebnisse zurückzugeben.
Funktionsname | Rückgabetyp | Beschreibung | Beispiel |
isnull (X) | Boolean | Es gibt TRUE zurück, wenn X NULL ist, andernfalls false | isnull ('NULL') gibt TRUE zurück |
isnotnull (X) | Boolean | Es gibt TRUE zurück, wenn X nicht NULL ist, andernfalls false | isnotnull ('NULL') gibt in FALSE zurück |
nvl (arg X, arg Y) | String | Es gibt arg Y zurück, wenn arg X NULL ist. Anderenfalls wird arg X zurückgegeben | nvl ('NULL', 'Wert ist Null') ergibt 'Wert ist Null' |
if (Boolean testCondition, T valueTrue, T valueFalseOrNull) | T | Es gibt True zurück, wenn die Testbedingung true ist, andernfalls False oder Null | if (2 = 2, 'True', 'False') |
verschmelzen (X, Y) | (Irgendein) | Es gibt die ersten Nicht-Null-Werte aus der Liste zurück. (Ich bezweifle dies. Wird es den allerersten Wert oder alle Nicht-Null-Werte zurückgeben?) | Zusammenführen (null, null, null, 1, 5, null, null, 6) ergibt 1 |
4. Datumsfunktionen
Dient zum Durchführen von Datumsmanipulationen und Konvertierungen von Datumstypen.
Funktionsname | Rückgabetyp | Beschreibung | Beispiel |
aktuelles Datum | Datum | Es gibt das aktuelle Datum der Abfrageausführung zurück | current_date () gibt das heutige Datum zurück |
unix_timestamp () | BigInt | Gibt den aktuellen Unix-Zeitstempel der Abfrageausführung in Sekunden zurück | unix_timestamp () gibt den aktuellen Unix-Zeitstempel zurück |
Jahr (Streichdatum) | Int | Es gibt das Jahr als Teil eines Datums zurück | Jahr ('1994-11-24') gibt 1994 zurück |
Quartal (Streichdatum) | Int | Es gibt das Quartal des Jahres eines Datums zurück | Quartal ('1994-11-24') gibt 4 zurück |
Monat (Streichdatum) | Int | Es gibt den Monatsteil eines Datums zurück | month ('1994-11-24') gibt 11 zurück |
Stunde (Streichdatum) | Int | Es gibt den Stundenteil des Zeitstempels zurück | hour ('1994-11-24 12:45:23') gibt 12 zurück |
Minute (Streichdatum) | Int | Es gibt den Minutenanteil des Zeitstempels zurück | Jahr ('1994-11-24 12:45:23') gibt 45 zurück |
miteinander ausgehen() | String | Er gibt das Datum als Teil der Zeitstempelzeichenfolge zurück | to_date () gibt einen Datumsteil zurück |
date_sub (Zeichenfolge date, int days) | String | Es wird die Anzahl der Tage vom Datum abgezogen | date_sub ('1994-11-24', 20) gibt '1994-11-04' zurück |
months_between (date1, date2) | Doppelt | Gibt die Anzahl der Monate zwischen Datum1 und Datum2 zurück. (Monate oder Anzahl der Tage?) | months_between ('1994-11-24', '1994-11-04') gibt 20 zurück |
5. Erfassungsfunktion
Wird zum Transformieren und Abrufen von Teilen von Sammlungstypen wie Karten, Arrays usw. verwendet.
Funktionsname | Rückgabetyp | Beschreibung | Beispiel |
Größe (Karte) | Int | Es gibt die Gesamtzahl der Elemente in der Karte zurück | size (('a': 2, 'b': 6)) gibt 2 zurück |
Größe (Array) | Int | Es gibt die Gesamtzahl der Elemente im Array zurück | size ((1, 3, 4, 7)) gibt 4 zurück |
array_contains (Array, Wert) | Boolean | Es gibt true zurück, wenn das Array den Wert enthält | array_contains ((1, 3, 9, 8, 5, 4, 7), 5) gibt TRUE zurück |
map_keys (Karte) | Array | Es wird ein ungeordnetes Array von Schlüsseln der Karte zurückgegeben | map_keys (('a': 2, 'b': 6, 'c': 1)) gibt ('b', 'c', 'a') zurück |
map_valuess (Karte) | Array | Es wird ein ungeordnetes Array von Werten der Karte zurückgegeben | map_keys (('a': 2, 'b': 6, 'c': 1)) gibt (1, 6, 2) zurück |
sort_array (array) | Array | Es wird ein sortiertes Array des angegebenen Arrays zurückgegeben | sort_array ((1, 3, 9, 8, 5, 4, 7)) gibt (1, 3, 4, 5, 7, 8, 9) zurück |
Fazit
Bisher haben wir verschiedene integrierte Funktionen in Hive besprochen. Im Vergleich zu MapReduce ist Hive praktischer und zeitsparender. Jeder, der über grundlegende SQL-Kenntnisse verfügt, kann problemlos HQLs schreiben, anstatt komplizierte MapReduce-Programme für die Datenverarbeitung.
Empfohlene Artikel
Dies ist eine Anleitung zu den integrierten Funktionen von Hive. Hier besprechen wir die integrierten Funktionen, die vordefiniert sind und in Hive verwendet werden können. Sie können auch den folgenden Artikel lesen, um mehr zu erfahren -
- Hive-String-Funktionen
- Hive-Funktion
- Hive-Befehle
- Bienenstock-Architektur
- Hive Order By
- Hive-Installation
- Eingebaute Python-Funktionen