Функции Hive: пример встроенных и UDF [пользовательских функций]


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

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

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

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

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

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

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

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

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

Дата Функции

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

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

Поддерживаемые форматы в этом:

МЕСЯЦ/МЕС/ММ, ГОД/ГГГГ/ГГ.

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

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

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

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

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

Имя функции Тип возврата Описание
if(Boolean testCondition, T valueTrue, T valueFalseOrNull) T Он будет извлекать и давать значение True, когда
Условия тестирования верны,
в противном случае дает значение False или Null.
ЕСЛИНУЛ( X) Логический Он будет извлекать и выдавать true, если X имеет значение NULL, и false в противном случае.
ЕСТЬНУЛЬ(X) Логический Он будет извлекать и выдавать true, если X не равен NULL, и false в противном случае.

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

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

Имя функции Тип возврата Описание
обратный ход (строка X) string Это даст перевернутую строку X
rpad(строка str, длина целого числа, заполнение строки) string Он извлечет и выдаст строку, которая дополняется справа с помощью поля до длины (целое значение).
rtrim(строка X) string Он извлекает и возвращает строку, полученную в результате обрезки пробелов с конца (правой стороны) X.
Например, rtrim('results') приводит к результату 'results'
пробел (INT n) string Он извлечет и выдаст строку из n пробелов.
разделить(STRING ул, STRING пат) массив Разбивает строку по pat (pat — регулярное выражение).
Str_to_map(текст[, разделитель1, разделитель2]) карта Он разделит текст на пары ключ-значение, используя два разделителя.

UDF (определяемые пользователем функции)

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

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

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

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

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

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

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

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