Hive-functies: ingebouwd en UDF [door gebruiker gedefinieerde functies] voorbeeld
Functies worden gebouwd voor een specifiek doel om wiskundige, rekenkundige, logische en relationele bewerkingen uit te voeren op de operanden van tabelkolomnamen.
Ingebouwde functies
Dit zijn functies die al beschikbaar zijn in Hive. Eerst moeten we de applicatievereisten controleren, en dan kunnen we deze ingebouwde functies in onze applicaties gebruiken. We kunnen deze functies rechtstreeks in onze applicatie oproepen.
De syntaxis en typen worden in de volgende sectie besproken.
Soorten ingebouwde functies in HIVE
- Verzamelfuncties
- Datum Functies
- Wiskundige functies
- Voorwaardelijke functies
- String-functies
- Diversen Functies
Verzamelfuncties
Deze functies worden gebruikt voor verzamelingen. Verzamelingen betekenen dat de groepering van elementen en het retourneren van enkele elementen of een reeks elementen afhankelijk is van het retourtype dat wordt vermeld in de functienaam.
Retourtype | Functie Naam | Beschrijving |
---|---|---|
INT | maat (kaart ) | Het zal het componentennummer in het kaarttype ophalen en weergeven |
INT | maat (matrix ) | Het zal het elementennummer in het arraytype ophalen en weergeven |
Array | Kaartsleutels(Kaart ) | Het zal een array ophalen en weergeven met de sleutels van de invoerkaart. Hier is de array ongeordend |
Array | Kaartwaarden(Kaart ) | Het zal een array ophalen en weergeven met de waarden van de invoerkaart. Hier is de array ongeordend |
Array | Sorteerarray(Array ) | sorteert de invoerarray in oplopende volgorde van array en elementen en retourneert deze |
Datum Functies
Deze worden gebruikt om datummanipulaties en conversie van datumtypen van het ene type naar het andere uit te voeren:
Functie Naam | Retourtype | Beschrijving |
---|---|---|
Unix_Tijdstempel() | bigint | We zullen actueel worden Unix tijdstempel in seconden |
Tot_datum(tekenreeks tijdstempel) | snaar | Het zal het datumgedeelte van een tijdstempelreeks ophalen en weergeven: |
jaar(tekenreeksdatum) | INT | Het haalt het jaargedeelte van een datum of een tijdstempelreeks op en geeft het weer |
kwartaal(datum/tijdstempel/tekenreeks) | INT | Het haalt het kwartaal van het jaar op en geeft het weer voor een datum, tijdstempel of tekenreeks in het bereik 1 tot 4 |
maand(tekenreeksdatum) | INT | Het geeft het maandgedeelte van een datum of een tijdstempelreeks |
uur(tekenreeksdatum) | INT | Het haalt het uur van de tijdstempel op en geeft het weer |
minuut(tekenreeksdatum) | INT | Het haalt de minuut van de tijdstempel op en geeft deze weer |
Date_sub(startdatum tekenreeks, int dagen) | snaar | Het wordt opgehaald en geeft een aftrekking van het aantal dagen tot de startdatum |
Huidige datum | gegevens | Het zal de huidige datum ophalen en weergeven aan het begin van de query-evaluatie |
LAATSTE _dag(tekenreeksdatum) | snaar | Het haalt de laatste dag op van de maand waartoe de datum behoort en geeft deze weer |
trunc(tekenreeksdatum, tekenreeksformaat) | snaar | Het zal de datum ophalen en weergeven, afgekapt tot de eenheid die door het formaat is opgegeven.
Ondersteunde formaten hierin: MAAND/MAAND/MM, JAAR/JJJJ/JJ. |
Wiskundige functies
Deze functies worden gebruikt voor Wiskundig Operaties. In plaats van UDFs te maken, hebben we enkele ingebouwde wiskundige functies in Hive.
Functie Naam | Retourtype | Beschrijving |
---|---|---|
rond(DUBBEL X) | DUBBELE | Het haalt de afgeronde BIGINT-waarde van X op en retourneert deze |
rond(DUBBEL X, INT d) | DUBBELE | Het zal X ophalen en retourneren, afgerond op d decimalen |
brood(DUBBEL X) | DUBBELE | Het haalt de afgeronde BIGINT-waarde van X op en retourneert deze met behulp van de afrondingsmodus HALF_EVEN |
vloer (DUBBEL X) | BIGINT | Het haalt de maximale BIGINT-waarde op en retourneert deze die gelijk is aan of kleiner is dan de X-waarde |
plafond(DUBBEL a), plafond(DUBBEL a) | BIGINT | Het haalt de minimale BIGINT-waarde op die gelijk is aan of groter is dan de X-waarde en retourneert deze |
rand(), rand(INT-zaad) | DUBBELE | Er wordt een willekeurig getal opgehaald en geretourneerd dat uniform is verdeeld van 0 tot 1 |
Voorwaardelijke functies
Deze functies worden gebruikt voor controles van voorwaardelijke waarden.
Functie Naam | Retourtype | Beschrijving |
---|---|---|
if(Booleaanse testConditie, T-waardeWaar, T-waardeFalseOrNull) | T | Het zal de waarde True ophalen en geven wanneer Testconditie is waar, geeft anders de waarde False of Null. |
IS NIET( X) | Boolean | Het haalt op en geeft true als X NULL is en anders false. |
ISNIETUL(X ) | Boolean | Het haalt op en geeft true als X niet NULL is en anders false. |
String-functies
Deze functies kunnen worden aangeroepen voor stringmanipulaties en stringbewerkingen.
Functie Naam | Retourtype | Beschrijving |
---|---|---|
omgekeerd(tekenreeks X) | snaar | Het geeft de omgekeerde reeks X |
rpad(string str, int lengte, string pad) | snaar | Het zal str ophalen en geven, die rechts is opgevuld met pad tot een lengte van lengte (gehele waarde) |
rtrim(tekenreeks X) | snaar | Het haalt de string op en retourneert deze die het resultaat is van het bijsnijden van spaties aan het einde (rechterkant) van X Bij voorbeeld, rtrim('resultaten') resulteert in 'resultaten' |
spatie(INT n) | snaar | Het zal een reeks van n spaties ophalen en geven. |
split(STRING str, STRING pat) | reeks | Splitst str rond pat (pat is een reguliere expressie). |
Str_naar_kaart(tekst[, scheidingsteken1, scheidingsteken2]) | kaart | Het splitst tekst op in sleutel-waardeparen met behulp van twee scheidingstekens. |
UDF's (door de gebruiker gedefinieerde functies)
In Hive kunnen de gebruikers eigen functies definiëren om aan bepaalde klantvereisten te voldoen. Deze staan in Hive bekend als UDF's. Door de gebruiker gedefinieerde functies geschreven Java voor specifieke modules.
Sommige UDF's zijn specifiek ontworpen voor de herbruikbaarheid van code in applicatieframeworks. De ontwikkelaar zal deze functies ontwikkelen in Java en integreer deze UDF's met de Hive.
Tijdens de uitvoering van de query kan de ontwikkelaar de code rechtstreeks gebruiken, en UDF's retourneren uitvoer volgens de door de gebruiker gedefinieerde taken. Het levert hoge prestaties op het gebied van codering en uitvoering.
Voor string-stamming hebben we bijvoorbeeld geen vooraf gedefinieerde functie in Hive. Hiervoor kunnen we stam-UDF inschrijven Java. Waar we ook Stem-functionaliteit nodig hebben, kunnen we deze Stem-UDF rechtstreeks in Hive aanroepen.
Stamfunctionaliteit betekent hier het afleiden van woorden uit de stamwoorden. Het is alsof het stamalgoritme de woorden ‘wensen’, ‘gewenst’ en ‘wensen’ reduceert tot het grondwoord ‘wens’. Voor het uitvoeren van dit soort functionaliteit kunnen we UDF schrijven Java en ermee integreren Bijenkorf.
Afhankelijk van de use cases kunnen de UDF's worden geschreven. Het zal verschillende aantallen invoer- en uitvoerwaarden accepteren en produceren.
Het algemene type UDF accepteert een enkele invoerwaarde en produceert een enkele uitvoerwaarde. Als de UDF in de query wordt gebruikt, wordt UDF één keer aangeroepen voor elke rij in de resultaatgegevensset.
Op de andere manier kan het een groep waarden als invoer accepteren en ook een enkele uitvoerwaarde retourneren.