Hive предоставляет язык запросов типов SQL для целей ETL поверх файловой системы Hadoop .
Язык Hive Query (HiveQL) предоставляет среду типа SQL в Hive для работы с таблицами, базами данных, запросами.
У нас могут быть различные типы предложений, связанные с Hive, для выполнения различных типов операций с данными и запросов. Для лучшей связи с различными узлами вне среды. HIVE также обеспечивает подключение JDBC.
Запросы Hive предоставляют следующие возможности:
- Моделирование данных, таких как создание баз данных, таблиц и т. Д.
- Функциональные возможности ETL, такие как извлечение, преобразование и загрузка данных в таблицы
- Объединяет для объединения различных таблиц данных
- Пользовательские пользовательские скрипты для простоты кода
- Инструмент для быстрого запроса в верхней части Hadoop
В этой статье вы узнаете
Создание таблицы в улье
Перед тем, как начать с нашей основной темы для этого урока, сначала мы создадим таблицу, чтобы использовать ее в качестве ссылок для следующего урока.
Здесь, в этом уроке, мы собираемся создать таблицу «employee_guru» с 6 столбцами.
Из приведенного выше снимка экрана,
- Мы создаем таблицу «employee_guru» с 6 значениями столбцов, такими как Id, Name, Age, Address, Salary, Department, которая принадлежит сотрудникам, присутствующим в организации «guru».
- Здесь на этом этапе мы загружаем данные в таблицу employee_guru. Данные, которые мы собираемся загрузить, будут помещены в файл Employees.txt.
Сортировать по запросу:
Синтаксис ORDER BY в HiveQL аналогичен синтаксису ORDER BY в языке SQL.
Order by — это пункт, который мы используем с оператором «SELECT» в запросах Hive, что помогает сортировать данные. Предложение Order by использует столбцы в таблицах Hive для сортировки определенных значений столбцов, упомянутых в Order by. Для какого-либо имени столбца мы определяем порядок по предложению, запрос будет выбирать и отображать результаты в порядке возрастания или убывания значений конкретного столбца.
Если указанный порядок по полю является строкой, то результат будет отображаться в лексикографическом порядке. На заднем конце его нужно передать одному редуктору.
На приведенном выше снимке экрана мы можем наблюдать следующее
- Это запрос, выполняемый к таблице «employee_guru» с предложением ORDER BY и значением Department как определенное имя столбца ORDER BY.
«Отдел» — это строка, поэтому результаты будут отображаться в соответствии с лексикографическим порядком.
- Это фактический вывод для запроса. Если мы соблюдаем это должным образом, мы можем видеть, что результаты отображаются на основе столбца Отдела, такого как ADMIN, Финансы и т. Д., В порядке выполнения запроса.
Запрос:
SELECT * FROM employees_guru ORDER BY Department;
Группировать по запросу:
Предложение Group by использует столбцы в таблицах Hive для группировки определенных значений столбцов, упомянутых в group by. Для какого-либо имени столбца мы определяем предложение «groupby», запрос будет выбирать и отображать результаты путем группировки значений конкретного столбца.
Например, на снимке экрана ниже показано общее количество сотрудников, присутствующих в каждом отделе. Здесь мы имеем «Отдел» как Группу по значению.
На приведенном выше снимке экрана мы увидим следующее
- Это запрос, который выполняется к таблице «employee_guru» с предложением GROUP BY с отделом как определенное имя столбца GROUP BY.
- Вывод, показанный здесь, является названием отдела, и сотрудники считают в различных отделах. Здесь все сотрудники принадлежат к конкретному отделу, сгруппированы и отображаются в результатах. Таким образом, результатом является название отдела с общим количеством сотрудников, присутствующих в каждом отделе.
Запрос:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Сортировать по:
Предложение Sort by выполняет имена столбцов таблиц Hive для сортировки выходных данных. Мы можем упомянуть DESC для сортировки в порядке убывания и ASC для сортировки по возрастанию.
В этом случае сортировка строк перед подачей в редуктор. Всегда сортировать зависит от типа столбца.
Например, если типы столбцов являются числовыми, он будет сортироваться в числовом порядке, если типы столбцов являются строковыми, он будет сортироваться в лексикографическом порядке.
Из приведенного выше снимка экрана мы можем наблюдать следующее:
- Это запрос, выполняемый к таблице «employee_guru» с предложением SORT BY с «id», определяющим имя столбца SORT BY. Мы использовали ключевое слово DESC.
- Таким образом, отображаемый вывод будет в порядке убывания «id».
Запрос:
SELECT * from employees_guru SORT BY Id DESC;
Кластер по:
Cluster By используется в качестве альтернативы для предложений Distribute BY и Sort BY в Hive-QL.
Предложение Cluster BY используется для таблиц, представленных в Hive. Hive использует столбцы в Cluster by для распределения строк по редукторам. Столбцы Cluster BY перейдут к нескольким редукторам.
- Это обеспечивает порядок сортировки значений, присутствующих в нескольких редукторах
Например, предложение Cluster By, упомянутое в имени столбца Id таблицы employee_guru таблицы. Вывод при выполнении этого запроса даст результаты нескольким редукторам на заднем конце. Но в качестве внешнего интерфейса это альтернативное предложение как для Sort By, так и для Distribute By.
Это на самом деле бэкэнд-процесс, когда мы выполняем запрос с сортировкой по, группированием и кластеризацией с точки зрения структуры сокращения Map. Поэтому, если мы хотим сохранить результаты в нескольких редукторах, мы используем Cluster By.
Из приведенного выше снимка экрана мы получаем следующие наблюдения:
- Это запрос, который выполняет предложение CLUSTER BY для значения поля Id. Здесь он собирается получить сортировку по значениям Id.
- Он отображает Id и имена, присутствующие в сортировке guru_employees, упорядоченной
Запрос:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Распределить по:
Предложение Distribute BY используется для таблиц, представленных в Hive. Hive использует столбцы в Distribute by для распределения строк по редукторам. Все столбцы Distribute BY будут идти к одному и тому же редуктору.
- Это гарантирует, что каждый из N редукторов получит непересекающиеся диапазоны столбца
- Он не сортирует вывод каждого редуктора
На приведенном выше снимке экрана мы можем наблюдать следующее
- Предложение DISTRIBUTE BY по идентификатору таблицы «empoloyees_guru»
- Вывод с идентификатором, именем. На заднем плане он пойдет к тому же редуктору
Запрос:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;