Функции на 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 ще бъде извикан веднъж за всеки ред в резултатния набор от данни.
По друг начин може да приеме група от стойности като вход и да върне също една изходна стойност.