Hive Funksjon: Innebygd & UDF (brukerdefinerte funksjoner)

Innholdsfortegnelse:

Anonim

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.