Функции на Hive: Пример за вградени и UDF [дефинирани от потребителя функции].


Функциите са изградени за конкретна цел за извършване на операции като математически, аритметични, логически и релационни върху операндите на имената на колоните в таблицата.

Вградени функции

Това са функции, които вече са налични в Hive. Първо трябва да проверим изискванията за приложението и след това можем да използваме тези вградени функции в нашите приложения. Можем да извикаме тези функции директно в нашето приложение.

Синтаксисът и типовете са споменати в следващия раздел.

Видове вградени функции в HIVE

  • Функции за събиране
  • Функции за дата
  • Математически функции
  • Условни функции
  • Струнни функции
  • Разни Функции

Функции за събиране

Тези функции се използват за колекции. Колекциите означават групирането на елементи и връщането на един или масив от елементи зависи от типа на връщане, споменат в името на функцията.

Тип на връщане Име на функция Descriptйон
INT размер (карта ) Той ще извлече и даде номера на компонентите в типа карта
INT размер (масив ) Той ще извлече и даде номера на елементите в типа масив
Масив Map_keys(Карта ) Той ще извлече и даде масив, съдържащ ключовете на входната карта. Тук масивът е неподреден
Масив Map_values(Карта ) Той ще извлече и даде масив, съдържащ стойностите на входната карта. Тук масивът е неподреден
Масив Сортиране_масив(Масив ) сортира входния масив във възходящ ред на масив и елементи и го връща

Функции за дата

Те се използват за извършване на манипулации с дати и преобразуване на типове дати от един тип в друг тип:

Име на функция Тип на връщане Descriptйон
Unix_Timestamp() BIGINT Ще получим ток Unix клеймо за време в секунди
До_дата (клеймо на низ) низ Той ще извлече и даде частта от датата на низ с клеймо за време:
година (низ дата) INT Той ще извлече и даде годината като част от дата или низ от клеймо за време
тримесечие (дата/клеймо за час/низ) INT Той ще извлече и даде тримесечието на годината за дата, времево клеймо или низ в диапазона от 1 до 4
месец (низ дата) INT Той ще даде на месеца част от дата или низ от клеймо за време
час (низ дата) INT Той ще извлече и ще даде часа на клеймото за време
минута (низ дата) INT Той ще извлече и ще даде минутата на клеймото за време
Date_sub(начална дата на низ, int дни) низ Той ще извлече и ще даде изваждане на броя дни до началната дата
Текуща_дата дата Той ще извлече и даде текущата дата в началото на оценката на заявката
ПОСЛЕДЕН _ден (низ дата) низ Ще извлече и ще даде последния ден от месеца, към който принадлежи датата
trunc(низ дата, низ формат) низ Той ще извлече и даде дата, съкратена до единицата, посочена от формата.

Поддържани формати в това:

МЕСЕЦ/МОН/ММ, ГОДИНА/ГГГГ/ГГ.

Математически функции

Тези функции се използват за математически Operaции. Вместо да създаваме UDF, ние имаме някои вградени математически функции в Hive.

Име на функция Тип на връщане Descriptйон
кръгъл (ДВОЙНО X) DOUBLE Той ще извлече и върне закръглената BIGINT стойност на X
кръгъл (DOUBLE X, INT d) DOUBLE Той ще извлече и върне X, закръглено до d знака след десетичната запетая
кафяв (DOUBLE X) DOUBLE Той ще извлече и върне закръглената BIGINT стойност на X, като използва режим на закръгляване HALF_EVEN
етаж (ДВОЙНО X) BIGINT Той ще извлече и върне максималната BIGINT стойност, която е равна на или по-малка от стойността X
таван(DOUBLE a), таван(DOUBLE a) BIGINT Той ще извлече и върне минималната BIGINT стойност, която е равна на или по-голяма от X стойността
rand(), rand(INT seed) DOUBLE Той ще извлече и върне произволно число, което е разпределено равномерно от 0 до 1

Условни функции

Тези функции се използват за проверки на условни стойности.

Име на функция Тип на връщане Descriptйон
if(Boolean testCondition, T valueTrue, T valueFalseOrNull) T Ще извлече и даде стойност True, когато
Условието на теста е вярно,
дава стойност False или Null в противен случай.
ISNULL( X) Булева Той ще извлече и даде true, ако X е NULL и false в противен случай.
ISNOTNULL(X) Булева Той ще извлече и даде true, ако X не е NULL и false в противен случай.

Струнни функции

Манипулации с низове и операции с низове, тези функции могат да бъдат извикани.

Име на функция Тип на връщане Descriptйон
обратен (низ X) низ Той ще даде обратния низ на X
rpad(string str, int length, string pad) низ Той ще извлече и даде str, който е подплатен отдясно с pad до дължина от дължина (цяло число)
rtrim(низ X) низ Той ще извлече и върне низа, резултат от изрязване на интервали от края (дясната страна) на X
Например, rtrim('резултати') води до 'резултати'
интервал (INT n) низ Той ще извлече и даде низ от n интервала.
split(STRING str, STRING pat) масив Разделя str около pat (pat е регулярен израз).
Str_to_map(текст[, разделител1, разделител2]) карта Той ще раздели текста на двойки ключ-стойност, като използва два разделителя.

UDF (дефинирани от потребителя функции)

В Hive потребителите могат да дефинират собствени функции, за да отговорят на определени изисквания на клиента. Те са известни като UDF в Hive. Дефинирани от потребителя функции, написани на Java за конкретни модули.

Някои UDF са специално проектирани за многократна употреба на код в рамки на приложения. Разработчикът ще разработи тези функции в Java и интегрирайте тези UDF с Hive.

По време на изпълнението на заявката разработчикът може директно да използва кода и UDF ще върнат изходни данни според дефинираните от потребителя задачи. Той ще осигури висока производителност по отношение на кодиране и изпълнение.

Например за произтичане на низове нямаме предварително дефинирана функция в Hive. За това можем да напишем stem UDF в Java. Където и да имаме нужда от Stem функционалност, можем директно да извикаме този Stem UDF в Hive.

Тук функционалността на основата означава извличане на думи от техните коренни думи. Това е като произходен алгоритъм, който намалява думите „желание“, „пожелано“ и „желания“ до коренната дума „желание“. За изпълнение на този тип функционалност можем да напишем UDF в Java и го интегрирайте с Кошер.

В зависимост от случаите на използване UDF могат да бъдат написани. Той ще приеме и произведе различен брой входни и изходни стойности.

Общият тип UDF ще приеме една входна стойност и ще произведе една изходна стойност. Ако UDF се използва в заявката, UDF ще бъде извикан веднъж за всеки ред в резултатния набор от данни.

По друг начин може да приеме група от стойности като вход и да върне също една изходна стойност.