Funkcie sú zostavené na konkrétny účel na vykonávanie operácií, ako sú matematické, aritmetické, logické a relačné operandy s názvami stĺpcov tabuľky.
Zabudované funkcie
Toto sú funkcie, ktoré sú už k dispozícii v úli. Najskôr musíme skontrolovať požiadavku na aplikáciu a potom môžeme túto vstavanú funkciu použiť v našich aplikáciách. Tieto funkcie môžeme zavolať priamo v našej aplikácii.
Syntax a typy sú uvedené v nasledujúcej časti.
Typy vstavaných funkcií v HIVE
- Funkcie zhromažďovania
- Funkcie dátumu
- Matematické funkcie
- Podmienené funkcie
- Funkcie reťazca
- Rôzne Funkcie
Funkcie zbierky:
Tieto funkcie sa používajú pre zbierky. Kolekcie znamenajú zoskupenie prvkov a vrátenie jedného alebo poľa prvkov závisí od typu návratu uvedeného v názve funkcie.
Typ vrátenia | Názov funkcie | Popis |
---|---|---|
INT | veľkosť (mapa | Načíta a poskytne číslu komponentu v type mapy |
INT | veľkosť (pole | Bude načítať a dať číslu prvkov v type poľa |
Pole | Map_keys (Mapa | Načíta a dá pole obsahujúce kľúče vstupnej mapy. Tu je pole v poradí |
Pole | Map_values (mapa | Načíta a dá pole obsahujúce hodnoty vstupnej mapy. Tu je pole v poradí |
Pole | Sort_array (pole | triedi vstupné pole vo vzostupnom poradí podľa poľa a prvkov a vracia ho |
Funkcie dátumu:
Používajú sa na vykonanie manipulácie s dátumom a konverzie typov dátumu z jedného typu na druhý:
Názov funkcie | Typ vrátenia | Popis |
---|---|---|
Unix_Timestamp () | BigInt | Aktuálnu časovú značku Unixu dostaneme v priebehu niekoľkých sekúnd |
To_date (časová značka reťazca) | struna | Načíta a dá dátovú časť reťazca časovej pečiatky: |
rok (dátum reťazca) | INT | Načíta a dá roku časť dátumu alebo reťazca časovej pečiatky |
štvrťrok (dátum / časová pečiatka / reťazec) | INT | Načíta a dá štvrťroku dátum, časovú pečiatku alebo reťazec v rozsahu 1 až 4 |
mesiac (dátum reťazca) | INT | Poskytne mesiacu časť dátumu alebo reťazec časovej pečiatky |
hodina (dátum reťazca) | INT | Načíta sa a dá hodinu časovej pečiatky |
minúta (dátum reťazca) | INT | Načíta sa a dá minútu časovej pečiatky |
Date_sub (počiatočný dátum reťazca, int dni) | struna | Načíta sa a dá Odčítanie počtu dní do počiatočného dátumu |
Aktuálny dátum | dátum | Načíta sa a dá aktuálny dátum na začiatku vyhodnotenia dotazu |
POSLEDNÝ _deň (dátum reťazca) | struna | Načíta sa a dá posledný deň v mesiaci, ku ktorému dátum patrí |
trunc (dátum reťazca, formát reťazca) | struna | Načíta sa a dá dátum skrátený na jednotku určenú formátom. Podporované formáty v tomto formáte: MESIAC / MON / MM, YEAR / RRRR / RR. |
Matematické funkcie :
Tieto funkcie sa používajú pre matematické operácie. Namiesto vytváraniaUDF máme v úli niekoľko zabudovaných matematických funkcií.
Názov funkcie | Typ vrátenia | Popis |
---|---|---|
guľatý (DVOJNÁSOBNÝ X) | DVOJNÁSOBNÝ | Načíta a vráti zaoblenú BIGINT hodnotu X |
kolo (DVOJNÁSOBNÝ X, INT d) | DVOJNÁSOBNÝ | Načíta a vráti X zaokrúhlené na d desatinných miest |
bround (DOUBLE X) | DVOJNÁSOBNÝ | Načíta a vráti zaoblenú BIGINT hodnotu X pomocou režimu zaokrúhľovania HALF_EVEN |
poschodie (DOUBLE X) | VEĽKÝ | Načíta a vráti maximálnu hodnotu BIGINT, ktorá je rovná alebo menšia ako hodnota X. |
strop (DVOJNÁSOB a), strop (DVOJNÁSOB a) | VEĽKÝ | Načíta a vráti minimálnu VEĽKÚ hodnotu, ktorá je rovná alebo väčšia ako hodnota X. |
rand (), rand (osivo INT) | DVOJNÁSOBNÝ | Načíta a vráti náhodné číslo, ktoré je rovnomerne rozložené od 0 do 1 |
Podmienené funkcie:
Tieto funkcie sa používajú na kontrolu podmienených hodnôt.
Názov funkcie | Typ vrátenia | Popis |
---|---|---|
if (Boolean testCondition, T valueTrue, T valueFalseOrNull) | T | Načíta a dá hodnotu True, keď je Testovacia podmienka pravdivá, inak dá hodnotu False alebo Null. |
ISNULL (X) | Boolovský | Načíta a dáva true, ak X je NULL a inak false. |
ISNOTNULL (X) | Boolovský | Načíta a dá true, ak X nie je NULL a inak false. |
Funkcie reťazca:
Tieto funkcie možno nazvať manipuláciou s reťazcami a operáciami s reťazcami.
Názov funkcie | Typ vrátenia | Popis |
---|---|---|
reverz (reťazec X) | struna | Poskytne obrátený reťazec X |
rpad (string str, int length, string pad) | struna | Načíta a dá str, ktorá je správne polstrovaná podložkou na dĺžku (celočíselná hodnota) |
rtrim (reťazec X) | struna | Načíta a vráti reťazec, ktorý je výsledkom orezania medzier od konca (pravej strany) znaku X. Napríklad príkaz rtrim ('results') má za následok 'results' |
medzera (INT n) | struna | Načíta a dá reťazec n medzier. |
rozdelené (STRING str., STRING pat) | pole | Rozdelí str okolo pat (pat je regulárny výraz). |
Str_to_map (text [, oddeľovač1, oddeľovač2]) | mapa | Rozdelí text na páry kľúč - hodnota pomocou dvoch oddeľovačov. |
UDF (funkcie definované používateľom):
V úli môžu používatelia definovať vlastné funkcie na splnenie určitých požiadaviek klienta. Tieto sú známe ako UDF v úli. Užívateľom definované funkcie napísané v Jave pre konkrétne moduly.
Niektoré z UDF sú špeciálne navrhnuté na opätovné použitie kódu v aplikačných rámcoch. Vývojár vyvinie tieto funkcie v prostredí Java a tieto UDF integruje do úľa.
Počas vykonávania dotazu môže vývojár priamo použiť kód a UDF vrátia výstupy podľa úloh definovaných používateľom. Poskytne vysoký výkon, pokiaľ ide o kódovanie a vykonávanie.
Napríklad pre reťazec stemming nemáme v Hive žiadnu preddefinovanú funkciu, preto môžeme do Java napísať stem UDF. Kedykoľvek požadujeme funkčnosť kmeňa, môžeme tento kmeň volať priamo do UDF v úli.
Tu kmeňová funkčnosť znamená odvodzovanie slov od koreňových slov. Je to ako keby algoritmus typu stemming redukoval slová „prianie“, „prianie“ a „prianie“ na koreňové slovo „prianie“. Na vykonávanie tohto typu funkcií môžeme napísať UDF v jave a integrovať sa s Hive.
V závislosti na prípadoch použitia, ktoré je možné zapísať na UDF, bude prijímať a vytvárať rôzne počty vstupných a výstupných hodnôt.
Všeobecný typ UDF bude akceptovať jednu vstupnú hodnotu a vytvorí jednu výstupnú hodnotu. Ak sa v dotaze použije UDF, potom sa UDF zavolá jedenkrát pre každý riadok vo výslednej množine údajov.
Iným spôsobom môže prijať skupinu hodnôt ako vstupnú a návratnú jedinú výstupnú hodnotu.