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