Учебники

8) Запросы и реализация

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

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

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

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

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

В этой статье вы узнаете

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

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

Здесь, в этом уроке, мы собираемся создать таблицу «employee_guru» с 6 столбцами.

Запросы и реализация Hive

Из приведенного выше снимка экрана,

  1. Мы создаем таблицу «employee_guru» с 6 значениями столбцов, такими как Id, Name, Age, Address, Salary, Department, которая принадлежит сотрудникам, присутствующим в организации «guru».
  2. Здесь на этом этапе мы загружаем данные в таблицу employee_guru. Данные, которые мы собираемся загрузить, будут помещены в файл Employees.txt.

Сортировать по запросу:

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

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

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

Запросы и реализация Hive

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

  1. Это запрос, выполняемый к таблице «employee_guru» с предложением ORDER BY и значением Department как определенное имя столбца ORDER BY.

    «Отдел» — это строка, поэтому результаты будут отображаться в соответствии с лексикографическим порядком.

  2. Это фактический вывод для запроса. Если мы соблюдаем это должным образом, мы можем видеть, что результаты отображаются на основе столбца Отдела, такого как ADMIN, Финансы и т. Д., В порядке выполнения запроса.

Запрос:

SELECT * FROM employees_guru ORDER BY Department;

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

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

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

Запросы и реализация Hive

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

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

Запрос:

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

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

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

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

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

Запросы и реализация Hive

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

  1. Это запрос, выполняемый к таблице «employee_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 таблицы employee_guru таблицы. Вывод при выполнении этого запроса даст результаты нескольким редукторам на заднем конце. Но в качестве внешнего интерфейса это альтернативное предложение как для Sort By, так и для Distribute By.

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

Запросы и реализация Hive

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

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

Запрос:

SELECT  Id, Name from employees_guru CLUSTER BY Id;

Распределить по:

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

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

Запросы и реализация Hive

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

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

Запрос:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;