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.