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

Зміст:

Anonim

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

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

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

Запити Hive надає такі функції:

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

У цій статті ви дізнаєтесь-

  • Замовлення за запитом
  • Групувати за запитом
  • Сортувати за
  • Кластер Автор
  • Розподілити за

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

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

У цьому посібнику ми збираємося створити таблицю "worker_guru" з 6 стовпцями.

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

  1. Ми створюємо таблицю "staff_guru" із 6 значеннями стовпців, такими як Id, Ім'я, Вік, Адреса, Зарплата, Департамент, яка належить працівникам, присутнім в організації "guru".
  2. На цьому кроці ми завантажуємо дані до таблиці staff_guru. Дані, які ми збираємось завантажити, будуть розміщені у файлі Employees.txt

Замовлення за запитом:

Синтаксис ORDER BY у HiveQL подібний до синтаксису ORDER BY у мові SQL.

Впорядкувати за - це речення, яке ми використовуємо з оператором "SELECT" у запитах Hive, що допомагає сортувати дані. Упорядкування за реченням використовуйте стовпці в таблицях вуликів для сортування окремих значень стовпців, згаданих у "Порядок за" Для будь-якої назви стовпця ми визначаємо порядок за реченням, запит вибирає та відображає результати за зростанням або спаданням певних значень стовпців.

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

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

  1. Це запит, який виконується в таблиці "worker_guru" з реченням ORDER BY із відділом, як визначено назвою стовпця ORDER BY.

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

  2. Це фактичний результат для запиту. Якщо ми спостерігаємо це належним чином, ми можемо побачити, що він отримує результати, що відображаються на основі стовпця Департаменту, такого як АДМІНІСТРАТОР, Фінанси та ін.

Запит:

SELECT * FROM employees_guru ORDER BY Department;

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

За групою пропозицій використовуються стовпці в таблицях вуликів для групування певних значень стовпців, зазначених у групі за. Для будь-якої назви стовпця ми визначаємо речення "groupby", запит вибирає та відображає результати шляхом групування певних значень стовпців.

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

На наведеному вище скріншоті ми спостерігаємо наступне

  1. Це запит, який виконується в таблиці "worker_guru" із реченням GROUP BY із відділом, як визначено назвою стовпця GROUP BY.
  2. Результатом, що тут показано, є назва відділу, а співробітники підраховують у різних відділах. Тут усі співробітники належать до конкретного підрозділу, згруповані за результатами та відображаються в них. Отже, результатом є назва відділу із загальною кількістю працівників, присутніх у кожному відділі.

Запит:

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

Сортувати за:

За допомогою пункту сортування за іменами стовпців таблиць Hive виконується сортування результату. Ми можемо згадати DESC для сортування порядку за спаданням та ASC для порядку зростання сорту.

У цьому сортуванні він сортує рядки перед подачею на редуктор. Завжди сортувати за залежно від типів стовпців.

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

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

  1. Це запит, який виконується в таблиці "worker_guru" з реченням SORT BY з "id", як визначено ім'я стовпця SORT BY. Ми використовували ключове слово DESC.
  2. Отже, вихідні дані будуть відображатись у порядку зменшення "id".

Запит:

SELECT * from employees_guru SORT BY Id DESC;

Кластер Автор:

Кластер By використовується як альтернатива як реченням Distribute BY, так і Sort BY у Hive-QL.

Застереження кластера BY, що використовується в таблицях, наявних у Hive. Hive використовує стовпці в кластері, щоб розподілити рядки між редукторами. Стовпці кластера BY будуть надходити до декількох редукторів.

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

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

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

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

  1. Це запит, який виконує речення CLUSTER BY щодо значення поля Id. Тут ми отримаємо сортування за значеннями Id.
  2. Він відображає ідентифікатори та імена, наявні в сортуванні guru_employees, упорядкованому за

Запит:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Розподілити за:

Розподіліть речення BY, яке використовується в таблицях, наявних у Hive. Hive використовує стовпці у Distribute by для розподілу рядків між редукторами. Усі стовпці Distribute BY переходять до того самого редуктора.

  • Це гарантує, що кожен з N редукторів отримує діапазони стовпців, що не перекриваються
  • Це не сортує результати кожного редуктора

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

  1. РОЗПОДІЛ РОБОТИ За умовою виконання ідентифікатора таблиці "empoloyees_guru"
  2. Результат, що показує ідентифікатор, ім'я. На задній частині він перейде на той самий редуктор

Запит:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;