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