Запросы Hive: Упорядочить по, Группировать по, Распределить по, Cluster По примерам

Hive предоставляет язык запросов типа SQL для целей ETL поверх Hadoop файловая система.

Язык запросов Hive (HiveQL) предоставляет среду типа SQL в Hive для работы с таблицами, базами данных и запросами.

У нас могут быть разные типы предложений, связанные с Hive, для выполнения различных манипуляций с данными и выполнения запросов. Для лучшей связи с различными узлами вне среды. HIVE также обеспечивает подключение JDBC.

Запросы Hive предоставляют следующие возможности:

  • Моделирование данных, такое как создание баз данных, таблиц и т. д.
  • Функции ETL, такие как извлечение, преобразование и загрузка данных в таблицы.
  • Играя объединить разные таблицы данных
  • Специальные пользовательские сценарии для упрощения написания кода.
  • Инструмент более быстрого запроса на базе Hadoop

Создание таблицы в Hive

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

В этом уроке мы собираемся создать таблицу «employees_guru» с 6 столбцами.

Создание таблицы в Hive

Судя по приведенному выше снимку экрана,

  1. Мы создаем таблицу «employees_guru» со значениями 6 столбцов, такими как идентификатор, имя, возраст, адрес, зарплата, отдел, которые принадлежат сотрудникам, присутствующим в организации «гуру».
  2. На этом этапе мы загружаем данные в таблицу сотрудников_гуру. Данные, которые мы собираемся загрузить, будут помещены в файл «Сотрудники.txt».

Упорядочить по запросу

Синтаксис ORDER BY в HiveQL аналогичен синтаксису ORDER BY в SQL язык.

Order by — это предложение, которое мы используем с оператором «SELECT» в Запросы улья, который помогает сортировать данные. Предложение Order by использует столбцы в таблицах Hive для сортировки определенных значений столбцов, упомянутых в параметре Order by. Для какого бы имени столбца мы ни определяли порядок по предложению, запрос будет выбирать и отображать результаты в порядке возрастания или убывания конкретных значений столбца.

Если упомянутое поле «Упорядочить по» является строкой, то результат будет отображаться в лексикографическом порядке. На задней стороне его необходимо передать одному редуктору.

Заказ по запросу

На снимке экрана выше мы можем наблюдать следующее

  1. Это запрос, который выполняется к таблице «employees_guru» с предложением ORDER BY, в котором «Отдел» определяется именем столбца ORDER BY. «Отдел» имеет значение String, поэтому он будет отображать результаты на основе лексикографического порядка.
  2. Это фактический результат запроса. Если мы внимательно посмотрим на это, мы увидим, что результаты отображаются на основе столбца отдела, такого как ADMIN, Finance и т. д., для выполнения запроса orderQuery.

Запрос:

SELECT * FROM employees_guru ORDER BY Department;

Группировать по запросу

Предложение Group by использует столбцы в таблицах Hive для группировки определенных значений столбцов, упомянутых в предложении group by. Для какого бы имени столбца мы ни определяли предложение «groupby», запрос будет выбирать и отображать результаты, группируя определенные значения столбца.

Например, на снимке экрана ниже будет показано общее количество сотрудников, присутствующих в каждом отделе. Здесь у нас есть «Отдел» как группа по значению.

Группировать по запросу

На приведенном выше скриншоте мы увидим следующее

  1. Это запрос, который выполняется к таблице «employees_guru» с предложением GROUP BY, где в качестве имени столбца указано «Отдел».
  2. Здесь показаны названия отделов и количество сотрудников в разных отделах. Здесь все сотрудники, принадлежащие конкретному отделу, группируются и отображаются в результатах. В результате получается название отдела и общее количество сотрудников, присутствующих в каждом отделе.

Запрос:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Сортировать по:

Предложение Sort by применяется к именам столбцов таблиц Hive для сортировки выходных данных. Мы можем упомянуть DESC для сортировки по убыванию и упомянуть ASC для сортировки по возрастанию.

При такой сортировке строки будут сортироваться перед подачей в редуктор. Всегда сортировать по зависит от типов столбцов.

Например, если типы столбцов являются числовыми, они будут сортироваться в числовом порядке, если типы столбцов являются строковыми, они будут сортироваться в лексикографическом порядке.

Сортировать по

На приведенном выше снимке экрана мы можем наблюдать следующее:

  1. Это запрос, который выполняется к таблице «employees_guru» с предложением SORT BY, где «id» определяет имя столбца SORT BY. Мы использовали ключевое слово DESC.
  2. Таким образом, отображаемый вывод будет в порядке убывания «id».

Запрос:

SELECT * from employees_guru SORT BY Id DESC;

Cluster By

Cluster By используется в качестве альтернативы предложениям Distribute BY и Sort BY в Hive-QL.

Cluster Предложение BY, используемое в таблицах, присутствующих в Hive. Hive использует столбцы в Cluster by, чтобы распределить строки между редукторами. Cluster Столбцы BY перейдут к нескольким редукторам.

  • Он обеспечивает порядок сортировки значений, присутствующих в нескольких редукторах.

Например, Cluster По предложению, указанному в имени столбца Id таблицы jobs_guru table. Вывод при выполнении этого запроса даст результаты нескольким редукторам на внутренней стороне. Но в качестве внешнего интерфейса это альтернативное предложение как для сортировки, так и для распределения.

Это на самом деле бэкэнд-процесс, когда мы выполняем запрос с сортировкой по, группировкой по и кластеризацией по в терминах Map reduce framework. Так что если мы хотим сохранить результаты в нескольких редукторах, мы идем с Cluster К.

Cluster By

Из приведенного выше снимка экрана мы получаем следующие наблюдения:

  1. Это запрос, который выполняет предложение CLUSTER BY для значения поля Id. Здесь будет выполнена сортировка по значениям идентификаторов.
  2. Он отображает идентификатор и имена, присутствующие в сортировке guru_employees, упорядоченные по

Запрос:

SELECT  Id, Name from employees_guru CLUSTER BY Id;

Распространить

Предложение Distribute BY, используемое в таблицах, присутствующих в Hive. Hive использует столбцы в Distribute by для распределения строк между редукторами. Все столбцы Distribute BY будут отправлены в один и тот же редуктор.

  • Это гарантирует, что каждый из N редукторов получит непересекающиеся диапазоны столбцов.
  • Он не сортирует выходные данные каждого редуктора

Распространить

На скриншоте выше мы можем наблюдать следующее

  1. DISTRIBUTE BY Выполнение предложения по идентификатору таблицы «empoloyees_guru»
  2. Вывод, показывающий идентификатор, имя. На заднем конце он пойдет в тот же редуктор

Запрос:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;