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å.
