Учебники

10) Язык запросов и операторы

Что такое HiveQL (язык запросов Hive)?

Hive предоставляет интерфейс командной строки для написания запросов Hive с использованием языка запросов Hive (HiveQL). Обычно синтаксис HQL аналогичен синтаксису SQL , знакомому большинству аналитиков данных.

Язык Hive, основанный на SQL, отделяет пользователя от сложности программирования Map Reduce. Он использует знакомые понятия из мира реляционных баз данных, такие как таблицы, строки, столбцы и схемы, для облегчения обучения.

Большинство взаимодействий обычно происходит через интерфейс командной строки (CLI). Hive предоставляет интерфейс командной строки для написания запросов Hive с использованием языка запросов Hive (Hive-QL).

Обычно синтаксис HiveQL аналогичен синтаксису SQL, с которым знакомо большинство аналитиков данных. Hive поддерживает четыре формата файлов: TEXTFILE, SEQUENCEFILE, ORC и RCFILE (Record Columnar File).

  • Для хранения метаданных для одного пользователя Hive использует базу данных derby и
  • Для многопользовательских метаданных или общих метаданных Hive использует MYSQL

Встроенные операторы

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

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

Типы встроенных операторов в HIVE:

  • Операторы отношений
  • Арифметические Операторы
  • Логические Операторы
  • Операторы на сложных типах
  • Конструкторы сложного типа

Реляционные операторы:

Мы используем реляционные операторы для сравнения отношений между двумя операндами.

  • Такие операторы, как равно, не равно, меньше, больше, чем … и т. Д.
  • Все типы операндов — это числовые типы в этих операторах.

Следующая таблица даст нам подробную информацию о реляционных операторах и их использовании.

Встроенный оператор Описание Операнд
X = Y TRUE,

если выражение X эквивалентно выражению Y,

иначе FALSE.

Он принимает все примитивные типы
X! = Y TRUE,

если выражение X не эквивалентно выражению Y,

иначе FALSE.

Он принимает все примитивные типы
X <Y TRUE,

если выражение X меньше, чем Y,

иначе FALSE.

Он принимает все примитивные типы
X <= Y TRUE,

если выражение X меньше или равно выражению Y,

иначе FALSE.

Он принимает все примитивные типы
X> Y TRUE,

если выражение X больше, чем выражение Y,

иначе FALSE.

Он принимает все примитивные типы
X> = Y TRUE,

если выражение X больше или равно выражению Y,

иначе FALSE.

Он принимает все примитивные типы
X НУЛЬ TRUE, если выражение X имеет значение NULL, иначе FALSE. Требуется все типы
X НЕ НУЛЬ FALSE

Если выражение X имеет значение NULL, иначе TRUE.

Требуется все типы
X как Y TRUE

Если строковый шаблон X соответствует Y, иначе FALSE.

Принимает только строки
X RLIKE Y NULL, если X или Y NULL, TRUE, если любая подстрока X соответствует регулярному выражению Java Y, иначе FALSE. Принимает только строки
X REGEXP Y Так же, как RLIKE. Принимает только строки

Арифметические операторы :

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

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

Пример примера:

2 + 3 дает результат 5.

В этом примере «+» — оператор, а 2 и 3 — операнды. Возвращаемое значение 5

Следующая таблица даст нам подробную информацию об арифметических операторах

Встроенный оператор Описание Операнд
X + Y Он вернет результат сложения значений X и Y. Требуется все типы чисел
X — Y Он вернет результат вычитания Y из значения X. Требуется все типы чисел
X * Y Он вернет результат умножения значений X и Y. Требуется все типы чисел
X / Y Он вернет результат деления Y на X. Требуется все типы чисел
X% Y Он вернет остаток, полученный в результате деления X на Y. Требуется все типы чисел
X & Y Он вернет выход побитового И X и Y. Требуется все типы чисел
X | Y Он вернет вывод побитового ИЛИ X и Y. Требуется все типы чисел
X ^ Y Он вернет вывод побитового XOR X и Y. Требуется все типы чисел
~ X Он вернет выход побитового НЕ X. Требуется все типы чисел

Логические операторы:

Мы используем логические операторы для выполнения логических операций над операндами

  • Логические операции, такие как И, ИЛИ, НЕ между операндами, мы используем эти операторы.
  • Все типы операндов имеют тип BOOLEAN в этих операторах.

Следующая таблица даст нам подробную информацию о логических операторах

операторы Описание Операнды
X И Y TRUE, если X и Y TRUE, иначе FALSE. Только логические типы
X && Y То же, что X и Y, но здесь мы используем символ && Только логические типы
X ИЛИ Y TRUE, если X или Y или оба TRUE, иначе FALSE. Только логические типы
X || Y То же, что X ИЛИ Y, но здесь мы используем || символ Только логические типы
НЕ Х ИСТИНА, если Х ЛОЖЬ, иначе ЛОЖЬ. Только логические типы
!ИКС То же, что НЕ X, но здесь мы используем! символ Только логические типы

Операторы на сложных типах:

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

операторы Операнды Описание
А [п] A является массивом, а n является целочисленным типом Он вернет n-й элемент в массиве A. Первый элемент имеет индекс 0
M [ключ] M — это карта <K, V>, а ключ имеет тип K Возвращает значения принадлежащие ключу на карте

Конструкторы сложного типа:

Следующая таблица даст нам подробную информацию о конструкторах сложного типа. Он будет создавать экземпляры на сложных типах данных. Это сложные типы данных, такие как Array, Map и Struct в Hive.

В этом разделе мы рассмотрим операции, выполняемые над конструкторами сложного типа.

операторы Операнды Описание
массив (val1, val2, …) Это создаст массив с заданными элементами, как упомянуто как val1, val2
Create_ union (тег, val1, val2, …) Это создаст тип объединения со значениями, на которые указывает параметр tag
карта (ключ1, значение1, ключ2, значение2, …) Это создаст карту с заданными парами ключ / значение, упомянутыми в операндах
Named_struct (name1, val1, name2, val2, …) Это создаст Struct с заданными именами полей и значениями, упомянутыми в операндах
STRUCT (val1, val2, val3, …) Создает структуру с заданными значениями поля. Имена полей структуры будут col1, col2,.

Резюме:

Hive предоставляет некоторые встроенные функции и операторы для управления данными, хранящимися в хранилище Hive. Hive похож на язык SQL, который поддерживает все типы операций с данными и запросов к таблицам и базам данных.