Hive-funktioner: Indbygget & UDF [Brugerdefinerede funktioner] Eksempel
Funktioner er bygget til et specifikt formål til at udføre operationer som matematiske, aritmetiske, logiske og relationelle på operanderne af tabelkolonnenavne.
Indbyggede funktioner
Det er funktioner, der allerede er tilgængelige i Hive. Først skal vi tjekke applikationskravet, og derefter kan vi bruge disse indbyggede funktioner i vores applikationer. Disse funktioner kan vi kalde direkte i vores applikation.
Syntaksen og typerne er nævnt i det følgende afsnit.
Typer af indbyggede funktioner i HIVE
- Indsamlingsfunktioner
- Dato funktioner
- Matematiske funktioner
- Betingede funktioner
- Strengfunktioner
- Diverse Funktioner
Indsamlingsfunktioner
Disse funktioner bruges til samlinger. Samlinger betyder, at grupperingen af elementer og returnering af enkelte eller matrix af elementer afhænger af returtypen nævnt i funktionsnavnet.
| Returtype | Funktionsnavn | Produktbeskrivelse |
|---|---|---|
| INT | størrelse (Kort ) | Den henter og giver komponenternes nummer i korttypen |
| INT | størrelse (Array ) | Det vil hente og give elementernes nummer i array-typen |
| Array | Map_keys(Kort ) | Det henter og giver et array, der indeholder nøglerne til inputkortet. Her er array i uordnet |
| Array | Map_values(Kort ) | Det henter og giver et array, der indeholder værdierne for inputkortet. Her er array i uordnet |
| Array | Sort_array(Array ) | sorterer input-arrayet i stigende rækkefølge af array og elementer og returnerer det |
Dato funktioner
Disse bruges til at udføre datomanipulationer og konvertering af datotyper fra én type til en anden type:
| Funktionsnavn | Returtype | Produktbeskrivelse |
|---|---|---|
| Unix_Timestamp() | BIGINT | Vi bliver aktuelle Unix tidsstempel i sekunder |
| To_date(streng tidsstempel) | streng | Det vil hente og give datodelen af en tidsstempelstreng: |
| år (strengdato) | INT | Den henter og giver året en del af en dato- eller tidsstempelstreng |
| kvartal (dato/tidsstempel/streng) | INT | Den henter og giver årets kvartal for en dato, et tidsstempel eller en streng i intervallet 1 til 4 |
| måned (strengdato) | INT | Det vil give måneden en del af en dato eller et tidsstempel |
| time (strengdato) | INT | Det vil hente og angive timen for tidsstemplet |
| minut (strengdato) | INT | Det vil hente og angive minut af tidsstemplet |
| Date_sub(streng startdato, int dage) | streng | Det vil hente og giver subtraktion af antal dage til startdato |
| Nuværende dato | dato | Den henter og giver den aktuelle dato ved starten af forespørgselsevalueringen |
| SIDSTE _dag(strengdato) | streng | Den henter og giver den sidste dag i måneden, som datoen tilhører |
| trunc(strengdato, strengformat) | streng | Det henter og giver dato afkortet til den enhed, der er angivet af formatet.
Understøttede formater i denne: MÅNED/MAN/MM, ÅR/ÅÅÅÅ/ÅÅ. |
Matematiske funktioner
Disse funktioner bruges til matematik Operationer. I stedet for at skabe UDF'er har vi nogle indbyggede matematiske funktioner i Hive.
| Funktionsnavn | Returtype | Produktbeskrivelse |
|---|---|---|
| runde (DOUBLE X) | DOBBELT | Den henter og returnerer den afrundede BIGINT-værdi af X |
| runde (DOUBLE X, INT d) | DOBBELT | Den henter og returnerer X afrundet til d decimaler |
| rund (DOUBLE X) | DOBBELT | Den henter og returnerer den afrundede BIGINT værdi af X ved brug af HALF_EVEN afrundingstilstand |
| gulv (DOUBLE X) | STORT | Den henter og returnerer den maksimale BIGINT-værdi, der er lig med eller mindre end X-værdi |
| loft(DOUBLE a), loft(DOUBLE a) | STORT | Den henter og returnerer den mindste BIGINT-værdi, der er lig med eller større end X-værdien |
| rand(), rand(INT-frø) | DOBBELT | Det vil hente og returnere et tilfældigt tal, der er fordelt ensartet fra 0 til 1 |
Betingede funktioner
Disse funktioner bruges til kontrol af betingede værdier.
| Funktionsnavn | Returtype | Produktbeskrivelse |
|---|---|---|
| if(Boolesk testBetingelse, T-værdiTrue, T-værdiFalseEllerNul) | T | Det vil hente og giver værdi Sand når Testtilstanden er sand, giver værdi Falsk Eller Null ellers. |
| ISNULL( X) | Boolesk | Den henter og giver sand, hvis X er NULL og ellers falsk. |
| ISNOTNULL(X) | Boolesk | Den henter og giver sand, hvis X ikke er NULL og ellers falsk. |
Strengfunktioner
Strengmanipulationer og strengoperationer kan disse funktioner kaldes.
| Funktionsnavn | Returtype | Produktbeskrivelse |
|---|---|---|
| omvendt (streng X) | streng | Det vil give den omvendte streng af X |
| rpad (streng str, int længde, streng pad) | streng | Det henter og giver str, som er højrepolstret med pad til en længde af længde (heltalsværdi) |
| rtrim(streng X) | streng | Den henter og returnerer strengen, der er resultatet af trimning af mellemrum fra enden (højre side) af X For eksempel, rtrim(' resultater ') resulterer i 'resultater' |
| mellemrum (INT n) | streng | Det vil hente og giver en streng på n mellemrum. |
| split(STRING str, STRING pat) | matrix | Splitter str om pat (pat er et regulært udtryk). |
| Str_to_map(tekst[, delimiter1, delimiter2]) | kort | Det vil opdele tekst i nøgle-værdi-par ved hjælp af to skilletegn. |
UDF'er (brugerdefinerede funktioner)
I Hive kan brugerne definere egne funktioner for at opfylde bestemte klientkrav. Disse er kendt som UDF'er i Hive. Brugerdefinerede funktioner skrevet ind Java for specifikke moduler.
Nogle af UDF'er er specielt designet til genanvendelighed af kode i applikationsrammer. Udvikleren vil udvikle disse funktioner i Java og integrere disse UDF'er med Hive.
Under udførelsen af forespørgslen kan udvikleren bruge koden direkte, og UDF'er vil returnere output i henhold til de brugerdefinerede opgaver. Det vil give høj ydeevne med hensyn til kodning og udførelse.
For eksempel, for strengstamming har vi ikke nogen foruddefineret funktion i Hive. Til dette kan vi skrive stamme UDF i Java. Uanset hvor vi har brug for Stem-funktionalitet, kan vi direkte kalde denne Stem UDF i Hive.
Her betyder stamfunktionalitet at udlede ord fra dets rodord. Det er ligesom stammealgoritmen reducerer ordene "ønsker", "ønsker" og "ønsker" til grundordet "ønske". For at udføre denne type funktionalitet kan vi skrive UDF ind Java og integrere det med Hive.
Afhængigt af anvendelsesmulighederne kan UDF'erne skrives. Det vil acceptere og producere forskellige antal input- og outputværdier.
Den generelle type UDF vil acceptere en enkelt inputværdi og producere en enkelt outputværdi. Hvis UDF'en bruges i forespørgslen, vil UDF blive kaldt én gang for hver række i resultatdatasættet.
På den anden måde kan den acceptere en gruppe værdier som input og også returnere en enkelt outputværdi.
