Hive Queries: Order By, Group By, Distribute By, Cluster За прикладами

Крім того, Hive надає мову запитів типу SQL для цілей ETL Hadoop файлова система.

Мова запитів Hive (HiveQL) забезпечує середовище типу SQL у Hive для роботи з таблицями, базами даних, запитами.

Ми можемо мати різні типи пунктів, пов’язаних з Hive, щоб виконувати різні типи маніпуляцій із даними та запитів. Для кращого зв’язку з різними вузлами за межами середовища. HIVE також забезпечує підключення JDBC.

Hive queries надає такі функції:

  • Моделювання даних, наприклад створення баз даних, таблиць тощо.
  • Такі функції ETL, як вилучення, перетворення та завантаження даних у таблиці
  • з'єднання для об’єднання різних таблиць даних
  • Спеціальні сценарії для користувача для спрощення коду
  • Швидший інструмент запитів на основі Hadoop

Створення таблиці в Hive

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

У цьому підручнику ми збираємося створити таблицю «employees_guru» з 6 стовпцями.

Створення таблиці в Hive

З наведеного вище знімка екрана

  1. Ми створюємо таблицю «employees_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. Для будь-якої назви стовпця, який ми визначаємо порядок за реченням, запит вибере та відобразить результати в порядку зростання чи спадання значень певного стовпця.

Якщо згаданий порядок за полем є рядком, то він відображатиме результат у лексикографічному порядку. На задній частині його потрібно передати в один редуктор.

Порядок за запитом

З наведеного вище знімка екрана ми можемо спостерігати наступне

  1. Це запит, який виконується до таблиці «employees_guru» з реченням ORDER BY із визначенням відділу ORDER BY ім’я стовпця. «Відділ» має значення String, тому він відображатиме результати на основі лексикографічного порядку.
  2. Це фактичний вихід для запиту. Якщо ми спостерігаємо за цим належним чином, ми можемо побачити, що він отримує результати, які відображаються на основі стовпця відділу, такого як АДМІНІСТРАТОР, фінанси тощо, у порядку виконання запиту.

Запит:

SELECT * FROM employees_guru ORDER BY Department;

Групувати за запитом

Речення Group by використовує стовпці в таблицях Hive для групування певних значень стовпців, згаданих у group by. Для будь-якої назви стовпця ми визначаємо речення «groupby», запит вибере та відобразить результати, згрупувавши певні значення стовпця.

Наприклад, на наведеному нижче знімку екрана відображатиметься загальна кількість працівників, присутніх у кожному відділі. Тут ми маємо «Відділ» як групу за значенням.

Групувати за запитом

З наведеного вище знімка екрана ми побачимо наступне

  1. Це запит, який виконується до таблиці «employees_guru» з пропозицією GROUP BY із визначенням імені відділу 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. Вулик використовує стовпці в Cluster на для розподілу рядків між редукторами. Cluster Стовпці BY перейдуть до кількох редукторів.

  • Він забезпечує порядок сортування значень, присутніх у кількох редукторах

Наприклад, Cluster Відповідно до пункту, згаданого в назві стовпця Id таблиці. Вихід під час виконання цього запиту дасть результати для кількох редукторів на задній частині. Але як інтерфейс це альтернативне положення як для сортування, так і для розподілу.

Насправді це внутрішній процес, коли ми виконуємо запит із сортуванням за, групуванням і кластером за структурою Map reduce. Отже, якщо ми хочемо зберегти результати в кількох редукторах, ми підемо з Cluster К.

Cluster By

З наведеного вище знімка екрана ми отримуємо такі спостереження:

  1. Це запит, який виконує речення CLUSTER BY для значення поля Id. Тут буде відсортовано значення 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;