Hive-Funktionen: Integrierte und UDF-Beispiele (benutzerdefinierte Funktionen).
Funktionen werden zu einem bestimmten Zweck erstellt, um Operationen wie mathematische, arithmetische, logische und relationale Operationen an den Operanden von Tabellenspaltennamen auszuführen.
Eingebaute Funktionen
Dabei handelt es sich um Funktionen, die in Hive bereits verfügbar sind. Zuerst müssen wir die Anwendungsanforderungen prüfen und dann können wir diese integrierten Funktionen in unseren Anwendungen verwenden. Wir können diese Funktionen direkt in unserer Anwendung aufrufen.
Die Syntax und Typen werden im folgenden Abschnitt erwähnt.
Arten integrierter Funktionen in HIVE
- Sammlungsfunktionen
- Datumsfunktionen
- Mathematische Funktionen
- Bedingte Funktionen
- String-Funktionen
- Sonstiges Funktionen
Sammlungsfunktionen
Diese Funktionen werden für Sammlungen verwendet. Sammlungen bedeuten, dass die Gruppierung von Elementen und die Rückgabe einzelner Elemente oder Arrays von dem im Funktionsnamen genannten Rückgabetyp abhängt.
Rückgabetyp | Funktionsname | Beschreibung |
---|---|---|
INT | Größe (Karte ) | Es wird die Komponentennummer im Kartentyp abrufen und angeben |
INT | Größe(Array ) | Es ruft die Elementnummer im Array-Typ ab und gibt sie an |
Array | Map_keys(Map ) | Es ruft ein Array ab und gibt es aus, das die Schlüssel der Eingabezuordnung enthält. Hier ist das Array ungeordnet |
Array | Map_values(Map ) | Es ruft ein Array ab und gibt es aus, das die Werte der Eingabekarte enthält. Hier ist das Array ungeordnet |
Array | Sort_array(Array ) | Sortiert das Eingabearray in aufsteigender Reihenfolge nach Array und Elementen und gibt es zurück |
Datumsfunktionen
Diese werden verwendet, um Datumsmanipulationen und die Konvertierung von Datumstypen von einem Typ in einen anderen Typ durchzuführen:
Funktionsname | Rückgabetyp | Beschreibung |
---|---|---|
Unix_Timestamp() | BigInt | Wir werden auf dem Laufenden bleiben Unix Zeitstempel in Sekunden |
To_date(String-Zeitstempel) | Schnur | Es wird den Datumsteil einer Zeitstempelzeichenfolge abrufen und ausgeben: |
Jahr (String-Datum) | INT | Es ruft den Jahresteil eines Datums oder einer Zeitstempelzeichenfolge ab und gibt ihn aus |
Quartal (Datum/Zeitstempel/Zeichenfolge) | INT | Es ruft das Quartal des Jahres für ein Datum, einen Zeitstempel oder eine Zeichenfolge im Bereich von 1 bis 4 ab und gibt es aus |
Monat (String-Datum) | INT | Es gibt den Monatsteil eines Datums oder einer Zeitstempelzeichenfolge an |
Stunde(String-Datum) | INT | Es ruft die Stunde des Zeitstempels ab und gibt sie aus |
Minute(String-Datum) | INT | Es ruft die Minute des Zeitstempels ab und gibt sie aus |
Date_sub(string Startdatum, int Tage) | Schnur | Es wird die Anzahl der Tage vom Startdatum abgerufen und subtrahiert |
Aktuelles Datum | Datum | Es ruft das aktuelle Datum ab und gibt es zu Beginn der Abfrageauswertung an |
LAST _day(String-Datum) | Schnur | Es ruft den letzten Tag des Monats ab, zu dem das Datum gehört, und gibt ihn aus |
trunc(String-Datum, String-Format) | Schnur | Es ruft das Datum ab und gibt es gekürzt auf die durch das Format angegebene Einheit aus.
Unterstützte Formate hier: MONAT/MON/MM, JAHR/JJJJ/JJ. |
Mathematische Funktionen
Diese Funktionen werden für die Mathematik verwendet Operationen. Anstatt UDFs zu erstellen, verfügen wir in Hive über einige integrierte mathematische Funktionen.
Funktionsname | Rückgabetyp | Beschreibung |
---|---|---|
rund (DOPPEL-X) | DOPPELT | Es ruft den gerundeten BIGINT-Wert von X ab und gibt ihn zurück |
rund (DOUBLE X, INT d) | DOPPELT | Es wird X abgerufen und auf d Dezimalstellen gerundet zurückgegeben |
braun (DOPPEL-X) | DOPPELT | Der gerundete BIGINT-Wert von X wird mithilfe des Rundungsmodus HALF_EVEN abgerufen und zurückgegeben |
Boden (DOPPEL-X) | GROSSARTIG | Es ruft den maximalen BIGINT-Wert ab und gibt ihn zurück, der gleich oder kleiner als der X-Wert ist |
Decke(DOUBLE a), Decke(DOUBLE a) | GROSSARTIG | Es ruft den minimalen BIGINT-Wert ab, der gleich oder größer als der X-Wert ist, und gibt ihn zurück |
rand(), rand(INT Seed) | DOPPELT | Es wird eine Zufallszahl abgerufen und zurückgegeben, die gleichmäßig von 0 bis 1 verteilt ist |
Bedingte Funktionen
Diese Funktionen werden für die Prüfung bedingter Werte verwendet.
Funktionsname | Rückgabetyp | Beschreibung |
---|---|---|
if(Boolean testCondition, T valueTrue, T valueFalseOrNull) | T | Es wird den Wert True abrufen und zurückgeben, wenn Die Testbedingung ist wahr, gibt andernfalls den Wert „False“ oder „Null“ zurück. |
ISNULL( X) | Boolean | Es wird abgerufen und gibt „true“ zurück, wenn X NULL ist, andernfalls „false“. |
ISNOTNULL(X ) | Boolean | Der Abruf erfolgt und es wird „true“ zurückgegeben, wenn X nicht NULL ist, andernfalls „false“. |
String-Funktionen
Für Stringmanipulationen und Stringoperationen können diese Funktionen aufgerufen werden.
Funktionsname | Rückgabetyp | Beschreibung |
---|---|---|
reverse(string X) | Schnur | Es ergibt sich die umgekehrte Zeichenfolge von X |
rpad(string str, int length, string pad) | Schnur | Es ruft str ab und gibt es aus, das rechts mit pad auf eine Länge von length (ganzzahliger Wert) aufgefüllt wird. |
rtrim(string X) | Schnur | Es ruft die Zeichenfolge ab und gibt sie zurück, die sich aus dem Abschneiden von Leerzeichen am Ende (rechte Seite) von X ergibt Zum Beispiel, rtrim(' results ') ergibt ' results' |
Leerzeichen(INT n) | Schnur | Es wird eine Zeichenfolge mit n Leerzeichen abgerufen und ausgegeben. |
split(STRING str, STRING pat) | Array | Teilt str um pat auf (pat ist ein regulärer Ausdruck). |
Str_to_map(text[, delimiter1, delimiter2]) | Karte | Der Text wird mithilfe von zwei Trennzeichen in Schlüssel-Wert-Paare aufgeteilt. |
UDFs (benutzerdefinierte Funktionen)
In Hive können die Benutzer eigene Funktionen definieren, um bestimmte Kundenanforderungen zu erfüllen. Diese werden in Hive als UDFs bezeichnet. Benutzerdefinierte Funktionen geschrieben Java für bestimmte Module.
Einige UDFs sind speziell für die Wiederverwendbarkeit von Code in Anwendungsframeworks konzipiert. Der Entwickler entwickelt diese Funktionen in Java und integrieren Sie diese UDFs in den Hive.
Während der Abfrageausführung kann der Entwickler den Code direkt verwenden und UDFs geben Ausgaben gemäß den benutzerdefinierten Aufgaben zurück. Es bietet eine hohe Leistung in Bezug auf Codierung und Ausführung.
Zum Beispiel haben wir für die String-Stemmung keine vordefinierte Funktion in Hive. Dafür können wir stem UDF in Java. Wo immer wir die Stem-Funktionalität benötigen, können wir diese Stem-UDF direkt in Hive aufrufen.
Hier bedeutet Stammfunktionalität, Wörter aus ihren Stammwörtern abzuleiten. Es ist, als würde ein Stammalgorithmus die Wörter „wishing“, „wished“ und „wishes“ auf das Stammwort „wish“ reduzieren. Um diese Art von Funktionalität auszuführen, können wir UDF in Java und integrieren Sie es mit Bienenstock.
Abhängig vom Anwendungsfall können die UDFs geschrieben werden. Sie akzeptieren und erzeugen unterschiedliche Zahlen von Eingabe- und Ausgabewerten.
Der allgemeine UDF-Typ akzeptiert einen einzelnen Eingabewert und erzeugt einen einzelnen Ausgabewert. Wenn die UDF in der Abfrage verwendet wird, wird die UDF einmal für jede Zeile im Ergebnisdatensatz aufgerufen.
Andererseits kann es eine Gruppe von Werten als Eingabe akzeptieren und auch einen einzelnen Ausgabewert zurückgeben.