Функції Hive: приклад вбудованих і UDF [функцій, визначених користувачем].
Функції створено з певною метою для виконання таких операцій, як математичні, арифметичні, логічні та реляційні, над операндами імен стовпців таблиці.
Вбудовані функції
Це функції, які вже доступні в Hive. Спочатку ми повинні перевірити вимоги програми, а потім ми зможемо використовувати ці вбудовані функції в наших програмах. Ми можемо викликати ці функції безпосередньо в нашій програмі.
Синтаксис і типи згадуються в наступному розділі.
Типи вбудованих функцій у HIVE
- Функції збору
- Функції дати
- Математичні функції
- Умовні функції
- Рядкові функції
- Різне Функції
Функції збору
Ці функції використовуються для колекцій. Колекції означають групуping кількість елементів, а повернення одного елемента або масиву елементів залежить від типу повернення, зазначеного в назві функції.
| Тип повернення | Назва функції | Опис |
|---|---|---|
| INT | розмір (карта ) | Він отримає та надасть номери компонентів у типі карти |
| INT | розмір (масив ) | Він отримає та надасть номери елементів у типі масиву |
| Масив | Map_keys(Карта ) | Він отримає та надасть масив, що містить ключі карти введення. Тут масив не впорядкований |
| Масив | Map_values(Карта ) | Він отримає та надасть масив, що містить значення вхідної карти. Тут масив не впорядкований |
| Масив | Масив_сортування(Масив ) | сортує вхідний масив у порядку зростання масиву та елементів і повертає його |
Функції дати
Вони використовуються для виконання маніпуляцій з датами та перетворення типів дат з одного типу на інший:
| Назва функції | Тип повернення | Опис |
|---|---|---|
| Unix_Timestamp() | BigInt | Отримаємо струм Юнекс позначка часу в секундах |
| To_date (рядок часової позначки) | рядок | Він отримає та надасть частину дати в рядку позначки часу: |
| рік (рядок дати) | INT | Він отримає та надасть рік як частину дати або рядка позначки часу |
| квартал (дата/мітка часу/рядок) | INT | Він отримає та надасть квартал року для дати, позначки часу або рядка в діапазоні від 1 до 4 |
| місяць (рядок дати) | INT | Це дасть частину місяця в дату або рядок позначки часу |
| година (рядок дати) | INT | Він отримає та надасть годину позначки часу |
| хвилина (рядок дати) | INT | Він отримає та надасть хвилину позначки часу |
| Date_sub(рядок дата початку, int днів) | рядок | Він отримає та видасть Subtracкількість днів до дати початку |
| Поточна дата | дата | Він витягне та надасть поточну дату на початку оцінки запиту |
| LAST _day (рядок дати) | рядок | Він отримає останній день місяця, до якого належить дата |
| trunc(рядок дати, формат рядка) | рядок | Він отримає та надасть дату, скорочену до одиниці, визначеної форматом.
Підтримувані формати в цьому: МІСЯЦЬ/ПН/ММ, РІК/РРРР/РР. |
Математичні функції
Ці функції використовуються для математики Operaцій. Замість створення UDF ми маємо деякі вбудовані математичні функції в Hive.
| Назва функції | Тип повернення | Опис |
|---|---|---|
| круглий (DOUBLE X) | ПОДВІЙНИЙ | Він отримає та поверне округлене значення BIGINT X |
| раунд (DOUBLE X, INT d) | ПОДВІЙНИЙ | Він отримає та поверне X із округленням до d знаків після коми |
| коричневий (DOUBLE X) | ПОДВІЙНИЙ | Він отримає та поверне округлене значення BIGINT X, використовуючи режим округлення HALF_EVEN |
| поверх (DOUBLE X) | ВЕЛИКИЙ | Він отримає та поверне максимальне значення BIGINT, яке дорівнює або менше значення X |
| стеля (DOUBLE a), стеля (DOUBLE a) | ВЕЛИКИЙ | Він отримає та поверне мінімальне значення BIGINT, яке дорівнює або перевищує значення X |
| rand(), rand(INT seed) | ПОДВІЙНИЙ | Він вибирає та повертає випадкове число, рівномірно розподілене від 0 до 1 |
Умовні функції
Ці функції використовуються для перевірки умовних значень.
| Назва функції | Тип повернення | Опис |
|---|---|---|
| if(Boolean testCondition, T valueTrue, T valueFalseOrNull) | T | Він буде отримати та надати значення True коли Тестовий стан відповідає дійсності, дає значення False або Null інакше. |
| ISNULL( X) | Boolean | Він буде отримувати і видавати істину, якщо X дорівнює NULL, і false в іншому випадку. |
| ISNOTNULL(X ) | Boolean | Він вибирає та видає значення true, якщо X не дорівнює NULL, і false в іншому випадку. |
Рядкові функції
Ці функції можна викликати маніпуляціями з рядками та операціями з ними.
| Назва функції | Тип повернення | Опис |
|---|---|---|
| реверс (рядок X) | рядок | Це дасть перевернутий рядок X |
| rpad(string str, int length, string pad) | рядок | Він отримає та надасть str, який доповнюється праворуч за допомогою pad до довжини length (ціле значення) |
| rtrim(рядок X) | рядок | Він отримає та поверне рядок, отриманий у результаті обрізання пробілів із кінця (права сторона) X Наприклад, rtrim('результати') призводить до 'результатів' |
| пробіл (INT n) | рядок | Він вибере та надасть рядок із n пробілів. |
| split(STRING str, STRING pat) | масив | Розділяє str навколо pat (pat — регулярний вираз). |
| Str_to_map(текст[, роздільник1, роздільник2]) | карта | Він розділить текст на пари ключ-значення за допомогою двох роздільників. |
UDF (функції, визначені користувачем)
У Hive користувачі можуть визначати власні функції для задоволення певних вимог клієнта. У Hive вони відомі як UDF. Функції, визначені користувачем, написані на Java для окремих модулів.
Деякі з UDF спеціально розроблені для багаторазового використання коду в програмах. Розробник розробить ці функції в Java і інтегруйте ці UDF з Hive.
Під час виконання запиту розробник може безпосередньо використовувати код, а UDF повертатиме результати відповідно до завдань, визначених користувачем. Це забезпечить високу продуктивність з точки зору кодування та виконання.
Наприклад, у Hive немає попередньо визначеної функції для створення рядка. Для цього ми можемо записати основу UDF Java. Скрізь, де нам потрібна функціональність Stem, ми можемо безпосередньо викликати цей Stem UDF у Hive.
Тут функція основи означає отримання слів від її кореня. Це подібно до того, як алгоритм визначення коренів скорочує слова «бажання», «бажання» та «бажання» до кореня слова «бажання». Для виконання цього типу функцій ми можемо записати UDF Java і інтегрувати його з Вулик.
Залежно від випадків використання UDF можуть бути написані. Він прийматиме та створюватиме різну кількість вхідних і вихідних значень.
Загальний тип UDF прийматиме одне вхідне значення та створюватиме одне вихідне значення. Якщо UDF використовується в запиті, UDF буде викликано один раз для кожного рядка в наборі даних результату.
З іншого боку, він може прийняти групу значень як вхідні дані та повернути окреме вихідне значення.
