Hive-funksjoner: Innebygd & UDF [Brukerdefinerte funksjoner] Eksempel


Funksjoner er bygget for et bestemt formål for å utføre operasjoner som matematisk, aritmetisk, logisk og relasjonell på operandene til tabellkolonnenavn.

Innebygde funksjoner

Dette er funksjoner som allerede er tilgjengelige i Hive. Først må vi sjekke applikasjonskravet, og deretter kan vi bruke disse innebygde funksjonene i applikasjonene våre. Vi kan kalle disse funksjonene direkte i vår applikasjon.

Syntaksen og typene er nevnt i den følgende delen.

Typer innebygde funksjoner i HIVE

  • Innsamlingsfunksjoner
  • Datofunksjoner
  • Matematiske funksjoner
  • Betingede funksjoner
  • strengfunksjoner
  • Diverse Funksjoner

Innsamlingsfunksjoner

Disse funksjonene brukes til samlinger. Samlinger betyr at grupperingen av elementer og returnering av enkeltelementer eller en rekke elementer avhenger av returtypen nevnt i funksjonsnavnet.

Returtype Funksjonsnavn Tekniske beskrivelser
INT størrelse (Kart ) Den vil hente og gi komponentnummeret i karttypen
INT størrelse (Array ) Den vil hente og gi elementene nummer i matrisetypen
Array Map_keys(Kart ) Den vil hente og gir en matrise som inneholder nøklene til inndatakartet. Her er matrisen i uordnet
Array Map_values(Kart ) Den henter og gir en matrise som inneholder verdiene til inndatakartet. Her er matrisen i uordnet
Array Sort_array(Array ) sorterer inndatamatrisen i stigende rekkefølge av matrise og elementer og returnerer den

Datofunksjoner

Disse brukes til å utføre datomanipulasjoner og konvertering av datotyper fra én type til en annen type:

Funksjonsnavn Returtype Tekniske beskrivelser
Unix_Timestamp() bigint Vi vil bli oppdatert Unix tidsstempel i sekunder
To_date(strengtidsstempel) string Den vil hente og gi datodelen av en tidsstempelstreng:
år (strengdato) INT Den vil hente og gi året en del av en dato- eller tidsstempelstreng
kvartal(dato/tidsstempel/streng) INT Den vil hente og gi kvartalet av året for en dato, et tidsstempel eller en streng i området 1 til 4
måned (strengdato) INT Det vil gi måneden en del av en dato- eller tidsstempelstreng
time (strengdato) INT Den vil hente og gir timen for tidsstemplet
minutt (strengdato) INT Den henter og gir minuttet for tidsstemplet
Dato_sub(streng startdato, int dager) string Det vil hente og gir subtraksjon av antall dager til startdato
Current_date data Den vil hente og gir gjeldende dato ved starten av spørrevalueringen
LAST _day(strengdato) string Den henter og gir den siste dagen i måneden som datoen tilhører
trunc(strengdato, strengformat) string Den vil hente og gi dato avkortet til enheten spesifisert av formatet.

Støttede formater i dette:

MÅNED/MÅN/MM, ÅR/ÅÅÅÅ/ÅÅ.

Matematiske funksjoner

Disse funksjonene brukes til matematikk Operasjoner. I stedet for å lage UDF-er, har vi noen innebygde matematiske funksjoner i Hive.

Funksjonsnavn Returtype Tekniske beskrivelser
runde (DOUBLE X) DOBBELT Den vil hente og returnere den avrundede BIGINT-verdien til X
runde (DOUBLE X, INT d) DOBBELT Den vil hente og returnere X avrundet til d desimaler
rund (DOUBLE X) DOBBELT Den vil hente og returnere den avrundede BIGINT-verdien til X ved å bruke HALF_EVEN avrundingsmodus
etasje (DOUBLE X) STORT Den vil hente og returnere den maksimale BIGINT-verdien som er lik eller mindre enn X-verdien
tak(DOUBLE a), tak(DOUBLE a) STORT Den vil hente og returnere minimum BIGINT-verdi som er lik eller større enn X-verdi
rand(), rand(INT frø) DOBBELT Den vil hente og returnere et tilfeldig tall som er jevnt fordelt fra 0 til 1

Betingede funksjoner

Disse funksjonene brukes til kontroller av betingede verdier.

Funksjonsnavn Returtype Tekniske beskrivelser
if(Boolsk testBetingelse, T-verdiSann, T-verdi UsannEllerNull) T Det vil hente og gir verdi Sann når
Testtilstanden er sann,
gir verdi False Eller Null ellers.
ISNULL( X) boolean Den vil hente og gi sann hvis X er NULL og ellers usann.
ISNOTNULL(X ) boolean Den vil hente og gi sann hvis X ikke er NULL og ellers usann.

strengfunksjoner

Strengemanipulasjoner og strengoperasjoner kan disse funksjonene kalles.

Funksjonsnavn Returtype Tekniske beskrivelser
revers (streng X) string Det vil gi den omvendte strengen av X
rpad (streng str, int lengde, streng pad) string Den henter og gir str, som er høyrepolstret med pute til en lengde (heltallsverdi)
rtrim(streng X) string Den vil hente og returnere strengen som er et resultat av trimming av mellomrom fra enden (høyre side) av X
For eksempel, rtrim(' resultater ') resulterer i 'resultater'
mellomrom (INT n) string Det vil hente og gir en streng med n mellomrom.
del(STRING str, STRING klapp) matrise Deler str rundt pat (pat er et regulært uttrykk).
Str_to_map(tekst[, skilletegn1, skilletegn2]) kart Det vil dele tekst i nøkkel-verdi-par ved hjelp av to skilletegn.

UDFer (brukerdefinerte funksjoner)

I Hive kan brukerne definere egne funksjoner for å møte visse klientkrav. Disse er kjent som UDF-er i Hive. Brukerdefinerte funksjoner skrevet inn Java for spesifikke moduler.

Noen av UDF-er er spesielt designet for gjenbruk av kode i applikasjonsrammeverk. Utvikleren vil utvikle disse funksjonene i Java og integrer disse UDF-ene med Hive.

Under kjøringen av spørringen kan utvikleren bruke koden direkte, og UDF-er vil returnere utdata i henhold til de brukerdefinerte oppgavene. Det vil gi høy ytelse når det gjelder koding og utførelse.

For eksempel, for strengstamming har vi ingen forhåndsdefinert funksjon i Hive. For dette kan vi skrive stamme UDF inn Java. Uansett hvor vi trenger Stem-funksjonalitet, kan vi direkte kalle denne Stem UDF i Hive.

Her betyr stammefunksjonalitet å utlede ord fra rotordene. Det er som stammealgoritmen reduserer ordene «ønske», «ønsket» og «ønsker» til rotordet «ønske». For å utføre denne typen funksjonalitet kan vi skrive UDF inn Java og integrere den med Hive.

Avhengig av brukstilfellene kan UDF-ene skrives. Den vil akseptere og produsere forskjellige antall inngangs- og utdataverdier.

Den generelle typen UDF vil akseptere en enkelt inngangsverdi og produsere en enkelt utgangsverdi. Hvis UDF brukes i spørringen, kalles UDF opp én gang for hver rad i resultatdatasettet.

På den andre måten kan den godta en gruppe verdier som input og returnere en enkelt utgangsverdi også.

Oppsummer dette innlegget med: