Функція вулика: вбудований & UDF (користувацькі функції)

Зміст:

Anonim

Функції будуються з певною метою для виконання таких операцій, як математичні, арифметичні, логічні та реляційні над операндами імен стовпців таблиці.

Вбудовані функції

Це функції, які вже доступні в Hive. Спочатку ми повинні перевірити вимоги до програми, а потім ми можемо використовувати ці вбудовані функції в наших додатках. Ми можемо викликати ці функції безпосередньо в нашому додатку.

Синтаксис та типи згадуються в наступному розділі.

Типи вбудованих функцій у HIVE

  • Функції колекції
  • Функції дати
  • Математичні функції
  • Умовні функції
  • Функції рядка
  • Різне Функції

Функції колекції:

Ці функції використовуються для колекцій. Колекції означають групування елементів та повернення одиниці або масиву елементів залежно від типу повернення, згаданого в назві функції.

Тип повернення Назва функції Опис
INT розмір (Карта ) Він отримає та дасть номер компонентів у типі карти
INT розмір (масив ) Він отримає і дасть номер елемента в типі масиву
Масив Клавіші_мапи (Карта ) Він витягне і дасть масив, що містить ключі вхідної карти. Тут масив невпорядкований
Масив Значення_карти (Карта ) Він витягне і дасть масив, що містить значення вхідної карти. Тут масив невпорядкований
Масив Масив сортування (масив ) сортує вхідний масив за зростанням масиву та елементів і повертає його

Функції дати:

Вони використовуються для виконання маніпуляцій датою та перетворення типів дати з одного типу на інший тип:

Назва функції Тип повернення Опис
Unix_Timestamp () BigInt Ми отримаємо поточну мітку часу Unix за секунди
To_date (позначка часу рядка) рядок Він отримає та дасть частину дати рядка мітки часу:
рік (дата рядка) INT Він отримає і дасть частину року дати або рядка мітки часу
квартал (дата / мітка часу / рядок) INT Він отримає та дасть квартал року для дати, позначки часу або рядка в діапазоні від 1 до 4
місяць (дата рядка) INT Це дасть місячну частину дати або рядок мітки часу
година (дата рядка) INT Він отримає і дасть годину позначки часу
хвилина (дата рядка) INT Він отримає та надасть хвилину позначки часу
Date_sub (дата початку рядка, int днів) рядок Він отримає і дасть Віднімання кількості днів до дати початку
Поточна дата дата Він отримає та дасть поточну дату на початку оцінки запиту
LAST _day (дата рядка) рядок Він завантажить і дасть останній день місяця, якому належить дата
trunc (дата рядка, формат рядка) рядок Він отримає та дасть усічену дату до одиниці, зазначеної форматом. Підтримувані формати: MONTH / MON / MM, YEAR / YYYY / YY.

Математичні функції :

Ці функції використовуються для математичних операцій. Замість того, щоб створювати UDF, ми маємо вбудовані математичні функції у Вулику.

Назва функції Тип повернення Опис
круглий (DOUBLE X) ДВОЙНИЙ Він отримає та поверне округлене значення BIGINT X
круглі (DOUBLE X, INT d) ДВОЙНИЙ Він отримає та поверне X, округлену до d знаків після коми
bround (DOUBLE X) ДВОЙНИЙ Він отримає та поверне округлене значення BIGINT X за допомогою режиму округлення HALF_EVEN
підлога (DOUBLE X) ВЕЛИКИЙ Він отримає та поверне максимальне значення BIGINT, яке дорівнює або менше значення X
стеля (ДВОЙНА а), стеля (ДВОЙНА а) ВЕЛИКИЙ Він отримає та поверне мінімальне значення BIGINT, яке дорівнює або перевищує значення X
rand (), rand (INT насіння) ДВОЙНИЙ Він отримає та поверне випадкове число, яке розподіляється рівномірно від 0 до 1

Умовні функції:

Ці функції використовуються для перевірки умовних значень.

Назва функції Тип повернення Опис
if (логічне випробуванняCondition, T valueTrue, T valueFalseOrNull) Т Він отримує і надає значення True, якщо умова тесту має значення true, інакше надає значення False or Null
ISNULL (X) Логічна Він витягне і дасть true, якщо X - NULL, а false - інакше.
ІСНОТУЛЬ (X) Логічна Він витягне і дасть true, якщо X не NULL, а в іншому випадку false.

Функції рядка:

Рядкові маніпуляції та рядкові операції ці функції можна викликати.

Назва функції Тип повернення Опис
реверс (рядок X) рядок Це дасть зворотний рядок X
rpad (рядок str, довжина int, рядок pad) рядок Він витягне і видає str, який вправо заповнено pad на довжину довжини (ціле значення)
rtrim (рядок X) рядок Він витягує та повертає рядок, отриманий в результаті обрізки пробілів з кінця (справа) X, наприклад , rtrim ('results') призводить до 'results'
пробіл (INT n) рядок Він отримає і дасть рядок з n пробілів.
розділити (STRING str, STRING pat) масив Розбиває str навколо pat (pat - регулярний вираз).
Str_to_map (текст [, роздільник1, роздільник2]) map <Рядок, Рядок> Він розділить текст на пари ключ-значення, використовуючи два роздільники.

UDF (користувацькі функції):

У Hive користувачі можуть визначати власні функції для задоволення певних вимог клієнта. Вони відомі як УДС у вулику. Визначені користувачем функції, написані на Java для певних модулів.

Деякі UDF спеціально розроблені для повторного використання коду в рамках програм. Розробник розробить ці функції на Java та інтегрує ці UDF з Hive.

Під час виконання запиту розробник може безпосередньо використовувати код, а UDF повертатимуть результати відповідно до визначених користувачем завдань. Це забезпечить високу продуктивність з точки зору кодування та виконання.

Наприклад, для стримування рядків у нас немає жодної заздалегідь визначеної функції в Hive, для цього ми можемо написати стовпчик UDF на Java. Скрізь, де нам потрібна функціональність стовбура, ми можемо безпосередньо викликати цей стовбуровий UDF у вулику.

Тут функціональність стовбура означає виведення слів із кореневих слів. Це все одно, що алгоритм стримування скорочує слова "бажаю", "бажаю" та "побажання" до кореневого слова "бажаю". Для виконання функціональних можливостей цього типу ми можемо писати UDF у Java та інтегрувати з Hive.

Залежно від випадків використання, які можна записати в UDF, він приймає та видає різну кількість вхідних та вихідних значень.

Загальний тип UDF приймає одне вхідне значення і створює одне вихідне значення. Якщо UDF використовується в запиті, то UDF буде викликатися один раз для кожного рядка в наборі даних результатів.

В інший спосіб, він може прийняти групу значень як вхідне та повернути також одне вихідне значення.