Funkce Hive: Vestavěné a UDF [Uživatelem definované funkce] Příklad
Funkce jsou vytvořeny pro konkrétní účel, aby mohly provádět operace jako matematické, aritmetické, logické a relační s operandy názvů sloupců tabulky.
Integrované funkce
Toto jsou funkce, které jsou již v Hive k dispozici. Nejprve musíme zkontrolovat požadavek aplikace a poté můžeme tyto vestavěné funkce použít v našich aplikacích. Tyto funkce můžeme volat přímo v naší aplikaci.
Syntaxe a typy jsou uvedeny v následující části.
Typy vestavěných funkcí v HIVE
- Sběrné funkce
- Funkce data
- Matematické funkce
- Podmíněné funkce
- Řetězcové funkce
- Různé Funkce
Sběrné funkce
Tyto funkce se používají pro kolekce. Kolekce znamenají seskupení prvků a vracení jednoho nebo pole prvků závisí na typu návratu uvedeného v názvu funkce.
Typ vrácení | Název funkce | Description |
---|---|---|
INT | velikost (mapa ) | Načte a dá číslo komponent v typu mapy |
INT | velikost (pole ) | Načte a poskytne číslo prvků v typu pole |
Pole | Map_keys(Map ) | Načte a poskytne pole obsahující klíče vstupní mapy. Zde je pole neuspořádané |
Pole | Map_values(Map ) | Načte a poskytne pole obsahující hodnoty vstupní mapy. Zde je pole neuspořádané |
Pole | Sort_array(Pole ) | seřadí vstupní pole ve vzestupném pořadí podle pole a prvků a vrátí je |
Funkce data
Používají se k provádění manipulací s datem a převodu typů data z jednoho typu na jiný:
Název funkce | Typ vrácení | Description |
---|---|---|
Unix_Timestamp() | BigInt | Dostaneme aktuální Unix časové razítko v sekundách |
To_date (časové razítko řetězce) | šňůra | Načte a poskytne datovou část řetězce časového razítka: |
rok (řetězcové datum) | INT | Načte a poskytne rok část data nebo řetězec časového razítka |
čtvrtletí (datum/časové razítko/řetězec) | INT | Načte a uvede čtvrtletí roku pro datum, časové razítko nebo řetězec v rozsahu 1 až 4 |
měsíc (řetězcové datum) | INT | Měsíc poskytne část data nebo řetězec časového razítka |
hodina (řetězcové datum) | INT | Načte a uvede hodinu časového razítka |
minuta (datum řetězce) | INT | Načte a poskytne minutu časového razítka |
Date_sub(počáteční datum řetězce, int dní) | šňůra | Načte a dá odečtení počtu dní do počátečního data |
Dnešní datum | datum | Načte a poskytne aktuální datum na začátku vyhodnocení dotazu |
POSLEDNÍ _den (datum řetězce) | šňůra | Načte a uvede poslední den v měsíci, do kterého datum patří |
trunc(datum řetězce, formát řetězce) | šňůra | Načte a poskytne datum zkrácené na jednotku určenou formátem.
Podporované formáty v tomto: MĚSÍC/PO/MM, ROK/RRRR/RR. |
Matematické funkce
Tyto funkce se používají pro matematiku Operaních. Místo vytváření UDF máme v Hive nějaké vestavěné matematické funkce.
Název funkce | Typ vrácení | Description |
---|---|---|
kulaté (DVOJKRÁT X) | DVOJNÁSOBEK | Načte a vrátí zaokrouhlenou hodnotu BIGINT X |
kulaté (DVOJNÁSOBNÉ X, INT d) | DVOJNÁSOBEK | Načte a vrátí X zaokrouhlené na d desetinných míst |
broušené (DVOJKRÁT X) | DVOJNÁSOBEK | Načte a vrátí zaokrouhlenou BIGINT hodnotu X pomocí režimu zaokrouhlení HALF_EVEN |
patro (DVOJITÉ X) | VELKÝ | Načte a vrátí maximální hodnotu BIGINT, která je rovna nebo menší než hodnota X |
strop (DOUBLE a), strop (DOUBLE a) | VELKÝ | Načte a vrátí minimální hodnotu BIGINT, která je rovna nebo větší než hodnota X |
rand(), rand(semeno INT) | DVOJNÁSOBEK | Načte a vrátí náhodné číslo, které je rovnoměrně rozloženo od 0 do 1 |
Podmíněné funkce
Tyto funkce se používají pro kontrolu podmíněných hodnot.
Název funkce | Typ vrácení | Description |
---|---|---|
if(Booleovská testová podmínka, T hodnotaTrue, T hodnotaFalseOrNull) | T | Načte a dá hodnotu True, když Podmínka testu je pravdivá, jinak dává hodnotu False nebo Null. |
ISNULL(X) | Boolean | Načte a dá hodnotu true, pokud je X NULL a jinak nepravda. |
ISNOTNULL(X) | Boolean | Načte a dá hodnotu true, pokud X není NULL a jinak nepravda. |
Řetězcové funkce
Tyto funkce lze volat manipulace s řetězci a operace s řetězci.
Název funkce | Typ vrácení | Description |
---|---|---|
obráceně (řetězec X) | šňůra | Poskytne obrácený řetězec X |
rpad(string string, int length, string pad) | šňůra | Načte a dá str, které je vpravo doplněno padem na délku délky (celočíselná hodnota) |
rtrim (řetězec X) | šňůra | Načte a vrátí řetězec vzniklý oříznutím mezer od konce (pravé strany) X Například, rtrim(' results ') výsledky v ' results' |
mezera (INT n) | šňůra | Načte a poskytne řetězec n mezer. |
split(STRING str, STRING pat) | řada | Rozdělí str kolem pat (pat je regulární výraz). |
Str_to_map(text[, oddělovač1, oddělovač2]) | mapa | Rozdělí text na páry klíč–hodnota pomocí dvou oddělovačů. |
UDF (uživatelem definované funkce)
V Hive mohou uživatelé definovat vlastní funkce pro splnění určitých požadavků klienta. Ty jsou v Hive známé jako UDF. Uživatelsky definované funkce zapsané v Java pro konkrétní moduly.
Některé z UDF jsou speciálně navrženy pro opětovné použití kódu v aplikačních rámcích. Vývojář tyto funkce vyvine v Java a integrovat tyto UDF s Hive.
Během provádění Query může vývojář přímo použít kód a UDF vrátí výstupy podle uživatelem definovaných úloh. Poskytne vysoký výkon z hlediska kódování a provádění.
Například pro odvození řetězce nemáme v Hive žádnou předdefinovanou funkci. Za tímto účelem můžeme zapsat kmen UDF Java. Kdekoli požadujeme funkcionalitu Stem, můžeme tento Stem přímo nazvat UDF v Hive.
Funkčnost kmene zde znamená odvozování slov z jejich kořenových slov. Je to jako když algoritmus odvození redukuje slova „přání“, „přání“ a „přání“ na kořen slova „přání“. Pro provádění tohoto typu funkčnosti můžeme zapsat UDF Java a integrovat jej s Úl.
V závislosti na případech použití lze UDF zapsat. Bude přijímat a vytvářet různé počty vstupních a výstupních hodnot.
Obecný typ UDF přijme jednu vstupní hodnotu a vytvoří jedinou výstupní hodnotu. Pokud je v dotazu použito UDF, bude UDF voláno jednou pro každý řádek v sadě výsledných dat.
Jiným způsobem může přijmout skupinu hodnot jako vstup a také vrátit jednu výstupní hodnotu.