Hive-funktioner: Inbyggd & UDF [Användardefinierade funktioner] Exempel
Funktioner är byggda för ett specifikt syfte för att utföra operationer som matematiska, aritmetiska, logiska och relationella på operanderna av tabellkolumnnamn.
Inbyggda funktioner
Det här är funktioner som redan är tillgängliga i Hive. Först måste vi kontrollera applikationskravet, och sedan kan vi använda dessa inbyggda funktioner i våra applikationer. Vi kan anropa dessa funktioner direkt i vår applikation.
Syntaxen och typerna nämns i följande avsnitt.
Typer av inbyggda funktioner i HIVE
- Insamlingsfunktioner
- Datumfunktioner
- Matematiska funktioner
- Villkorliga funktioner
- Strängfunktioner
- Övrigt Funktioner
Insamlingsfunktioner
Dessa funktioner används för samlingar. Samlingar betyder att grupperingen av element och returnering av enstaka eller array av element beror på returtypen som nämns i funktionsnamnet.
Returtyp | Funktionsnamn | Description |
---|---|---|
INT | storlek (karta ) | Den kommer att hämta och ge komponenternas nummer i karttypen |
INT | storlek (Array ) | Det kommer att hämta och ge elementen nummer i arraytypen |
Array | Map_keys(Map ) | Den hämtar och ger en array som innehåller nycklarna för inmatningskartan. Här är arrayen i oordnad |
Array | Map_values(Map ) | Den hämtar och ger en array som innehåller värdena för inmatningskartan. Här är arrayen i oordnad |
Array | Sort_array(Array ) | sorterar inmatningsmatrisen i stigande ordning efter matris och element och returnerar den |
Datumfunktioner
Dessa används för att utföra datummanipulationer och konvertering av datumtyper från en typ till en annan typ:
Funktionsnamn | Returtyp | Description |
---|---|---|
Unix_Timestamp() | bigint | Vi kommer att bli aktuella Unix tidsstämpel i sekunder |
To_date(sträng tidsstämpel) | sträng | Det kommer att hämta och ge datumdelen av en tidsstämpelsträng: |
år (strängdatum) | INT | Det kommer att hämta och ge året en del av ett datum eller en tidsstämpelsträng |
kvartal (datum/tidsstämpel/sträng) | INT | Den hämtar och ger årets kvartal för ett datum, en tidsstämpel eller en sträng i intervallet 1 till 4 |
månad (strängdatum) | INT | Det kommer att ge månaden en del av ett datum eller en tidsstämpelsträng |
timme (strängdatum) | INT | Den kommer att hämta och anger tiden för tidsstämpeln |
minut (strängdatum) | INT | Den hämtar och ger minuten av tidsstämpeln |
Date_sub(sträng startdatum, int dagar) | sträng | Det hämtar och ger subtraktion av antal dagar till startdatum |
Dagens datum | datum | Den hämtar och ger det aktuella datumet i början av frågeutvärderingen |
LAST _day(strängdatum) | sträng | Den hämtar och ger den sista dagen i månaden som datumet tillhör |
trunc(strängdatum, strängformat) | sträng | Den hämtar och ger datum trunkerat till den enhet som specificeras av formatet.
Format som stöds i detta: MÅNAD/MÅN/MM, ÅR/ÅÅÅÅ/ÅÅ. |
Matematiska funktioner
Dessa funktioner används för matematik Operationer. Istället för att skapa UDF:er har vi några inbyggda matematiska funktioner i Hive.
Funktionsnamn | Returtyp | Description |
---|---|---|
rund (DOUBLE X) | DUBBEL | Det kommer att hämta och returnera det avrundade BIGINT-värdet på X |
rund (DOUBLE X, INT d) | DUBBEL | Den hämtar och returnerar X avrundat till d decimaler |
rund (DOUBLE X) | DUBBEL | Den hämtar och returnerar det avrundade BIGINT-värdet på X med HALF_EVEN avrundningsläge |
golv (DUBBLA X) | STORT | Den hämtar och returnerar det maximala BIGINT-värdet som är lika med eller mindre än X-värdet |
tak(DOUBLE a), tak(DOUBLE a) | STORT | Den hämtar och returnerar det minsta BIGINT-värdet som är lika med eller större än X-värdet |
rand(), rand(INT-frö) | DUBBEL | Den hämtar och returnerar ett slumpmässigt tal som är jämnt fördelat från 0 till 1 |
Villkorliga funktioner
Dessa funktioner används för kontroller av villkorade värden.
Funktionsnamn | Returtyp | Description |
---|---|---|
if(Booleskt testvillkor, T värdeTrue, T värdeFalseEllerNull) | T | Det kommer att hämta och ger värde Sant när Testvillkoret är sant, ger värde Falskt Eller Null annars. |
ISNULL( X) | Boolean | Det hämtar och ger sant om X är NULL och annars falskt. |
ISNOTNULL(X) | Boolean | Det hämtar och ger sant om X inte är NULL och annars falskt. |
Strängfunktioner
Strängmanipulationer och strängoperationer dessa funktioner kan kallas.
Funktionsnamn | Returtyp | Description |
---|---|---|
omvänd (sträng X) | sträng | Det kommer att ge den omvända strängen av X |
rpad(string str, int length, string pad) | sträng | Det hämtar och ger str, som är högerstoppad med pad till en längd av längd (heltalsvärde) |
rtrim(sträng X) | sträng | Den hämtar och returnerar strängen som är resultatet av trimning av mellanslag från slutet (höger sida) av X Till exempel, rtrim(' resultat ') resulterar i ' resultat' |
mellanslag(INT n) | sträng | Det kommer att hämta och ger en sträng med n mellanslag. |
split(STRING str, STRING pat) | array | Delar str runt pat (pat är ett reguljärt uttryck). |
Str_to_map(text[, avgränsare1, avgränsare2]) | Karta | Det kommer att dela upp text i nyckel-värdepar med två avgränsare. |
UDF:er (användardefinierade funktioner)
I Hive kan användarna definiera egna funktioner för att uppfylla vissa klientkrav. Dessa är kända som UDFs i Hive. Användardefinierade funktioner inskrivna Java för specifika moduler.
Vissa UDF:er är speciellt utformade för återanvändning av kod i applikationsramverk. Utvecklaren kommer att utveckla dessa funktioner i Java och integrera dessa UDF:er med Hive.
Under exekveringen av frågan kan utvecklaren använda koden direkt, och UDF:er returnerar utdata enligt de användardefinierade uppgifterna. Det kommer att ge hög prestanda vad gäller kodning och utförande.
Till exempel har vi inte någon fördefinierad funktion i Hive för strängstamming. För detta kan vi skriva stam UDF i Java. Varhelst vi behöver Stem-funktionalitet kan vi direkt kalla denna Stem UDF i Hive.
Här betyder stamfunktionalitet att härleda ord från dess grundord. Det är som att stemmingsalgoritmen reducerar orden "önskar", "önskar" och "önskningar" till grundordet "önskemål". För att utföra denna typ av funktionalitet kan vi skriva UDF i Java och integrera den med Bikupa.
Beroende på användningsfallen kan UDF:erna skrivas. Den kommer att acceptera och producera olika antal in- och utvärden.
Den allmänna typen av UDF kommer att acceptera ett enda ingångsvärde och producera ett enda utdatavärde. Om UDF används i frågan kommer UDF att anropas en gång för varje rad i resultatdatauppsättningen.
På det andra sättet kan den acceptera en grupp värden som indata och returnera ett enda utdatavärde också.