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.