Funcții Hive: Built-in și UDF [Funcții definite de utilizator] Exemplu
Funcțiile sunt construite pentru un scop specific pentru a efectua operații precum matematică, aritmetică, logică și relațională pe operanzii numelor de coloane de tabel.
Funcții încorporate
Acestea sunt funcții care sunt deja disponibile în Hive. În primul rând, trebuie să verificăm cerințele aplicației și apoi putem folosi aceste funcții încorporate în aplicațiile noastre. Putem apela aceste funcții direct în aplicația noastră.
Sintaxa și tipurile sunt menționate în secțiunea următoare.
Tipuri de funcții încorporate în HIVE
- Funcții de colectare
- Funcții de dată
- Funcții matematice
- Funcții condiționate
- Funcții șiruri
- Diverse Funcții
Funcții de colectare
Aceste funcții sunt folosite pentru colecții. Colecțiile înseamnă gruparea elementelor și returnarea unui singur sau a matricei de elemente depinde de tipul de returnare menționat în numele funcției.
Tipul de returnare | Numele funcției | Descriere |
---|---|---|
INT | dimensiune (Hartă ) | Acesta va prelua și va da numărul componentelor în tipul hărții |
INT | dimensiune (Matrice ) | Acesta va prelua și va da numărul elementelor din tipul matricei |
Matrice | Chei_hărți(Hartă ) | Acesta va prelua și va oferi o matrice care conține cheile hărții de intrare. Aici matricea este neordonată |
Matrice | Valori_hărți(Hartă ) | Acesta va prelua și va oferi o matrice care conține valorile hărții de intrare. Aici matricea este neordonată |
Matrice | Sort_array(Matrice ) | sortează matricea de intrare în ordine crescătoare a matricei și elementelor și o returnează |
Funcții de dată
Acestea sunt folosite pentru a efectua manipulări de date și conversie a tipurilor de date de la un tip la altul:
Numele funcției | Tipul de returnare | Descriere |
---|---|---|
Unix_Timestamp() | BIGINT | Vom fi la curent Unix marca temporală în secunde |
To_date(marca temporală șir) | şir | Acesta va prelua și va oferi data o parte dintr-un șir de marcaj temporal: |
an (data sirului) | INT | Acesta va prelua și va oferi partea anului dintr-o dată sau un șir de marcaj temporal |
trimestru (data/timestamp/șir) | INT | Acesta va prelua și va oferi trimestrul anului pentru o dată, un marcaj de timp sau un șir în intervalul de la 1 la 4 |
luna(data sirului) | INT | Va da partea de lună a unei date sau a unui șir de marcaj temporal |
ora (data sirului) | INT | Va prelua și va oferi ora marcajului de timp |
minut(data sirului) | INT | Acesta va prelua și va oferi minutul marcajului de timp |
Date_sub(șir data de începere, int zile) | şir | Se va prelua și va oferi Scăderea numărului de zile până la data de începere |
Data curenta | data | Acesta va prelua și va oferi data curentă la începutul evaluării interogării |
ULTIMA _zi (data șirului) | şir | Va prelua și va oferi ultima zi a lunii căreia îi aparține data |
trunc (data șir, format șir) | şir | Acesta va prelua și va oferi data trunchiată la unitatea specificată de format.
Formate acceptate în aceasta: LUNA/LU/LL, AN/AAAA/AA. |
Funcții matematice
Aceste funcții sunt folosite pentru matematică Operațiuni. În loc să creăm UDF-uri, avem câteva funcții matematice încorporate în Hive.
Numele funcției | Tipul de returnare | Descriere |
---|---|---|
rotund(DUBLU X) | DUBLA | Va prelua și va returna valoarea rotunjită BIGINT a lui X |
rotund(DUBLU X, INT d) | DUBLA | Va prelua și va returna X rotunjit la d zecimale |
rotund(DUBLU X) | DUBLA | Acesta va prelua și va returna valoarea rotunjită BIGINT a lui X folosind modul de rotunjire HALF_EVEN |
podea (DUBLU X) | BIGINT | Acesta va prelua și va returna valoarea maximă BIGINT care este egală sau mai mică decât valoarea X |
plafon (DUBLU a), plafon (DUBLU a) | BIGINT | Va prelua și va returna valoarea minimă BIGINT care este egală sau mai mare decât valoarea X |
rand(), rand (sămânță INT) | DUBLA | Acesta va prelua și va returna un număr aleatoriu care este distribuit uniform de la 0 la 1 |
Funcții condiționate
Aceste funcții sunt utilizate pentru verificări ale valorilor condiționate.
Numele funcției | Tipul de returnare | Descriere |
---|---|---|
if(Boolean testCondition, T valueTrue, T valueFalseOrNull) | T | Va prelua și va da valoare True când Condiția de testare este adevărată, dă valoare Fals sau Null în caz contrar. |
ISNULL(X) | boolean | Va prelua și va da adevărat dacă X este NULL și fals în caz contrar. |
ISNOTNULL(X) | boolean | Va prelua și va da adevărat dacă X nu este NULL și fals în caz contrar. |
Funcții șiruri
Aceste funcții pot fi numite manipulări și operații cu șiruri.
Numele funcției | Tipul de returnare | Descriere |
---|---|---|
invers (șir X) | şir | Va da șirul inversat al lui X |
rpad(string str, int lungime, string pad) | şir | Se va prelua și va da str, care este completată în dreapta cu pad la o lungime de lungime (valoare întreagă) |
rtrim(șir X) | şir | Acesta va prelua și va returna șirul rezultat din tăierea spațiilor de la sfârșitul (partea dreaptă) a lui X De exemplu, rtrim('rezultate') rezultă în 'rezultate' |
spațiu(INT n) | şir | Va prelua și va oferi un șir de n spații. |
împărțit(STRING str, STRING pat) | mulțime | Împarte str în jurul pat (pat este o expresie regulată). |
Str_to_map(text[, delimitator1, delimiter2]) | Hartă | Acesta va împărți textul în perechi cheie-valoare folosind doi delimitatori. |
UDF-uri (funcții definite de utilizator)
În Hive, utilizatorii pot defini propriile funcții pentru a satisface anumite cerințe ale clienților. Acestea sunt cunoscute ca UDF-uri în Hive. Funcții definite de utilizator scrise în Java pentru module specifice.
Unele dintre UDF-uri sunt concepute special pentru reutilizarea codului în cadre de aplicație. Dezvoltatorul va dezvolta aceste funcții în Java și să integreze acele UDF-uri cu Hive.
În timpul execuției Interogării, dezvoltatorul poate utiliza direct codul, iar UDF-urile vor returna rezultate în funcție de sarcinile definite de utilizator. Va oferi performanțe ridicate în ceea ce privește codificarea și execuția.
De exemplu, pentru string stemming nu avem nicio funcție predefinită în Hive. Pentru aceasta, putem scrie stem UDF în Java. Oriunde avem nevoie de funcționalitatea Stem, putem numi direct acest Stem UDF în Hive.
Aici funcționalitatea stem înseamnă derivarea cuvintelor din cuvintele sale rădăcină. Este ca și cum algoritmul stemming reduce cuvintele „dorință”, „dorit” și „dorință” la rădăcina cuvântului „dorință”. Pentru a efectua acest tip de funcționalitate, putem scrie UDF în Java și să-l integreze cu Stup.
În funcție de cazurile de utilizare, UDF-urile pot fi scrise. Acesta va accepta și produce un număr diferit de valori de intrare și de ieșire.
Tipul general de UDF va accepta o singură valoare de intrare și va produce o singură valoare de ieșire. Dacă UDF este utilizat în interogare, atunci UDF va fi apelat o dată pentru fiecare rând din setul de date rezultat.
În alt mod, poate accepta un grup de valori ca intrare și poate returna și o singură valoare de ieșire.