Запросы Hive: сортировка, группировка, распределение, кластеризация по примерам

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

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

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

Запросы Hive предоставляют следующееwing Особенности:

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

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

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

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

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

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

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

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

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

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

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

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

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

  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», запрос будет выбирать и отображать результаты, группируя определенные значения столбца.

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

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

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

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

Запрос:

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

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

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

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

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

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

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

  1. Это запрос, который выполняется к таблице «employees_guru» с предложением SORT BY, где «id» определяет имя столбца SORT BY. Мы использовали ключевое слово DESC.
  2. Таким образом, отображаемый вывод будет в порядке убывания «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 таблицы jobs_guru. Вывод при выполнении этого запроса даст результаты нескольким редукторам на внутренней стороне. Но в качестве внешнего интерфейса это альтернативное предложение как для сортировки, так и для распределения.

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

Кластерить по

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

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

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

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

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

Запрос:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;