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.
