Учебники

11) Функция: Встроенная и UDF

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

Встроенные функции

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

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

Типы встроенных функций в HIVE

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

Функции коллекции:

Эти функции используются для коллекций. Коллекции означают, что группировка элементов и возвращение одного или массива элементов зависит от типа возвращаемого значения, указанного в имени функции.

Тип возврата Имя функции Описание
INT размер (Map <KV>) Он извлечет и даст номер компонента в типе карты
INT Размер (Array <Т>) Он извлечет и даст номер элемента в типе массива
Массив <K> Map_keys (Map <KV>) Он извлечет и выдаст массив, содержащий ключи входной карты. Здесь массив находится в неупорядоченном
Массив <V> Map_values ​​(Map <KV>) Он извлечет и даст массив, содержащий значения входной карты. Здесь массив находится в неупорядоченном
Массив <т> Sort_array (Array <Т>) сортирует входной массив в порядке возрастания массива и элементов и возвращает его

Функции даты:

Они используются для выполнения манипуляций датами и преобразования типов дат из одного типа в другой тип:

Имя функции Тип возврата Описание
UNIX_TIMESTAMP () BigInt Мы получим текущую метку времени Unix в секундах.
To_date (строка времени) строка Он извлечет и передаст часть даты строки метки времени:
год (строковая дата) INT Он будет извлекать и давать год часть даты или строку метки времени
четверть (дата / метка времени / строка) INT Он извлечет и даст квартал года для даты, отметки времени или строки в диапазоне от 1 до 4
месяц (строковая дата) INT Это даст часть месяца даты или строку метки времени
час (строковая дата) INT Это принесет и даст час метки времени
минута (строковая дата) INT Это принесет и даст минуту отметки времени
Date_sub (дата начала строки, int days) строка Он извлечет и вычитает количество дней до даты начала
Текущая дата свидание Он извлечет и даст текущую дату в начале оценки запроса
LAST _day (дата строки) строка Он извлекает и дает последний день месяца, к которому относится дата
trunc (строковая дата, строковый формат) строка Он извлечет и даст усеченную дату до единицы, указанной в формате.

Поддерживаются следующие форматы:

MONTH / MON / MM, YEAR / YYYY / YY.

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

Эти функции используются для математических операций. Вместо создания UDF у нас есть несколько встроенных математических функций в Hive.

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

Условные функции:

Эти функции используются для проверки условных значений.

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

Строковые функции:

Строковые манипуляции и строковые операции, эти функции могут быть вызваны.

Имя функции Тип возврата Описание
обратный (строка X) строка Это даст обратную строку X
rpad (строка str, длина int, строка pad) строка Он извлечет и даст str, который дополнен правой клавишей pad до длины length (целочисленное значение)
тртрим (строка Х) строка Он извлекает и возвращает строку, полученную из пробелов в конце (справа) от X. Например , rtrim (‘results’) приводит к ‘results’
пробел (INT n) строка Он извлечет и выдаст строку из n пробелов.
сплит (STRING str, STRING pat) массив Разбивает str вокруг pat (pat — регулярное выражение).
Str_to_map (text [, delimiter1, delimiter2]) карта <String, String> Он разделит текст на пары ключ-значение, используя два разделителя.

UDF (пользовательские функции):

В Hive пользователи могут определять собственные функции для удовлетворения определенных требований клиента. Они известны как UDF в Hive. Пользовательские функции, написанные на Java для конкретных модулей.

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

Во время выполнения запроса разработчик может напрямую использовать код, а пользовательские функции будут возвращать выходные данные в соответствии с заданными пользователем задачами. Это обеспечит высокую производительность с точки зрения кодирования и исполнения.

Например, для создания строки у нас нет предопределенной функции в Hive, для этого мы можем написать UDF основы в Java. Везде, где нам требуется функциональность Stem, мы можем напрямую вызывать этот UDF Stem в Hive.

Здесь базовая функциональность означает получение слов из корневых слов. Это похоже на то, что алгоритм стемминга сводит слова «желать», «желать» и «пожелания» к корневому слову «желание». Для выполнения функциональности этого типа мы можем написать UDF на Java и интегрировать с Hive.

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

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

С другой стороны, он может принимать группу значений в качестве входных данных и также возвращать одно выходное значение.