Funksjoner er bygget for et bestemt formål for å utføre operasjoner som matematisk, aritmetisk, logisk og relasjonell på operandene til tabellkolonnavn.
Innebygde funksjoner
Dette er funksjoner som allerede er tilgjengelige i Hive. Først må vi sjekke applikasjonskravet, og så kan vi bruke denne innebygde funksjonene i applikasjonene våre. Vi kan kalle disse funksjonene direkte i applikasjonen vår.
Syntaksen og typene er nevnt i følgende avsnitt.
Typer innebygde funksjoner i HIVE
- Samlingsfunksjoner
- Datofunksjoner
- Matematiske funksjoner
- Betingede funksjoner
- Strengfunksjoner
- Diverse Funksjoner
Samlingsfunksjoner:
Disse funksjonene brukes til samlinger. Samlinger betyr gruppering av elementer og retur av enkelt- eller matrise av elementer avhenger av returtype som er nevnt i funksjonsnavnet.
Returtype | Funksjonsnavn | Beskrivelse |
---|---|---|
INT | størrelse (kart | Den henter og gir komponentnummeret i karttypen |
INT | størrelse (Array | Det vil hente og gi elementets nummer i matrisen |
Array | Map_keys (Map | Den henter og gir en matrise som inneholder tastene til inndatakartet. Her er matrisen uordnet |
Array | Kartverdier (Kart | Den henter og gir en matrise som inneholder verdiene til inndatakartet. Her er matrisen uordnet |
Array | Sort_array (Array | sorterer inngangsmatrisen i stigende rekkefølge av matrisen og elementer og returnerer den |
Datofunksjoner:
Disse brukes til å utføre datohåndtering og konvertering av datatyper fra en type til en annen type:
Funksjonsnavn | Returtype | Beskrivelse |
---|---|---|
Unix_Timestamp () | BigInt | Vi får nåværende Unix-tidsstempel på få sekunder |
Til_dato (tidsstempel for streng) | streng | Det vil hente og gi datodelen til en tidsstempelstreng: |
år (streng dato) | INT | Den vil hente og gi året del av en dato eller en tidsstempelstreng |
kvartal (dato / tidsstempel / streng) | INT | Den henter og gir kvart år for en dato, tidsstempel eller streng i området 1 til 4 |
måned (streng dato) | INT | Det vil gi måneden en del av en dato eller en tidsstempelstreng |
time (strengdato) | INT | Det vil hente og gir timen til tidsstempelet |
minutt (strengdato) | INT | Det vil hente og gir minutt av tidsstempelet |
Date_sub (streng startdato, int dager) | streng | Den henter og gir subtraksjon av antall dager til startdatoen |
Dagens dato | Dato | Den henter og gir gjeldende dato ved starten av spørreevalueringen |
SISTE _dag (strengdato) | streng | Den henter og gir den siste dagen i måneden som datoen tilhører |
trunc (strengdato, strengformat) | streng | Den henter og gir dato avkortet til enheten spesifisert av formatet. Støttede formater i dette: MÅNED / MÅN / MM, ÅR / ÅÅÅÅ / ÅÅ. |
Matematiske funksjoner :
Disse funksjonene brukes til matematiske operasjoner. I stedet for å lageUDF-er, har vi noen innebygde matematiske funksjoner i Hive.
Funksjonsnavn | Returtype | Beskrivelse |
---|---|---|
runde (DOBBEL X) | DOBBELT | Den henter og returnerer den avrundede BIGINT-verdien på X |
runde (DOUBLE X, INT d) | DOBBELT | Den henter og returnerer X avrundet til d desimaler |
bround (DOBBEL X) | DOBBELT | Den vil hente og returnere den avrundede BIGINT-verdien til X ved hjelp av avrundingsmodus HALF_EVEN |
etasje (DOBBEL X) | STOR | Den henter og returnerer den maksimale BIGINT-verdien som er lik eller mindre enn X-verdien |
tak (DOBBELT a), tak (DOBBELT a) | STOR | Den henter og returnerer den minste BIGINT-verdien som er lik eller større enn X-verdien |
rand (), rand (INT seed) | DOBBELT | Det vil hente og returnere et tilfeldig tall som fordeles jevnt fra 0 til 1 |
Betingede funksjoner:
Disse funksjonene brukes til kontroll av betingede verdier.
Funksjonsnavn | Returtype | Beskrivelse |
---|---|---|
if (Boolean testCondition, T valueTrue, T valueFalseOrNull) | T | Det vil hente og gi verdi sant når testtilstand er sant, gir verdi falsk eller null ellers. |
ISNULL (X) | Boolsk | Det vil hente og gi sant hvis X er NULL og falsk ellers. |
ER IKKE (X) | Boolsk | Det vil hente og gi sant hvis X ikke er NULL og falsk ellers. |
Strengfunksjoner:
Strengmanipulasjoner og strengoperasjoner disse funksjonene kan kalles.
Funksjonsnavn | Returtype | Beskrivelse |
---|---|---|
omvendt (streng X) | streng | Det vil gi den omvendte strengen av X |
rpad (streng str, int lengde, streng pad) | streng | Den henter og gir str, som er polstret med pad til en lengde på lengden (heltall) |
rtrim (streng X) | streng | Den henter og returnerer strengen som følge av trimming av mellomrom fra slutten (høyre side) av X. For eksempel resulterer rtrim ('resultater') i 'resultater' |
mellomrom (INT n) | streng | Den vil hente og gir en streng med n mellomrom. |
delt (STRING str, STRING pat) | array | Deler str rundt klapp (klapp er et vanlig uttrykk). |
Str_to_map (tekst [, avgrenser1, avgrenser2]) | kart | Den vil dele tekst i nøkkelverdipar ved hjelp av to skilletegn. |
UDFer (brukerdefinerte funksjoner):
I Hive kan brukerne definere egne funksjoner for å oppfylle visse kundekrav. Disse er kjent som UDFer i Hive. Brukerdefinerte funksjoner skrevet i Java for spesifikke moduler.
Noen av UDF-er er spesielt designet for gjenbrukbarhet av kode i applikasjonsrammer. Utvikleren vil utvikle disse funksjonene i Java og integrere disse UDF-ene med Hive.
Under Query-utførelsen kan utvikleren bruke koden direkte, og UDF-er vil returnere utdata i henhold til brukerdefinerte oppgaver. Det vil gi høy ytelse når det gjelder koding og utføring.
For eksempel for strengstamming har vi ingen forhåndsdefinert funksjon i Hive, for dette kan vi skrive stamme UDF i Java. Uansett hvor vi trenger stammefunksjonalitet, kan vi direkte kalle denne stammen UDF i Hive.
Her betyr stammefunksjonalitet å hente ord fra rotordene. Det er som å stamme algoritme reduserer ordene "ønsker", "ønsket" og "ønsker" til grunnordet "ønske." For å utføre denne typen funksjonalitet, kan vi skrive UDF i java og integrere med Hive.
Avhengig av brukssakene UDF-ene kan skrives, vil den akseptere og produsere forskjellige antall inn- og utgangsverdier.
Den generelle typen UDF vil akseptere en enkelt inngangsverdi og produsere en enkelt utgangsverdi. Hvis UDF brukes i spørringen, vil UDF bli kalt opp en gang for hver rad i resultatdatasettet.
På den andre måten kan den akseptere en gruppe verdier som inngang og returnere også en enkelt utgangsverdi.