Hive надає мову запитів типу SQL для цілей ETL поверх файлової системи Hadoop.
Мова запитів Hive (HiveQL) забезпечує середовище типу SQL у Hive для роботи з таблицями, базами даних, запитами.
Ми можемо мати різний тип речень, пов’язаних з Hive, для виконання різних типів маніпуляцій із даними та запитів. Для кращого зв’язку з різними вузлами поза середовищем. HIVE також забезпечує підключення JDBC.
Запити Hive надає такі функції:
- Моделювання даних, таких як створення баз даних, таблиць тощо.
- Функціональні можливості ETL, такі як вилучення, перетворення та завантаження даних у таблиці
- Об’єднується для об’єднання різних таблиць даних
- Спеціальні користувацькі сценарії для зручності кодування
- Швидший інструмент запитів на вершині Hadoop
У цій статті ви дізнаєтесь-
- Замовлення за запитом
- Групувати за запитом
- Сортувати за
- Кластер Автор
- Розподілити за
Створення таблиці у вулику
Перш ніж розпочати з нашої основної теми для цього підручника, спочатку ми створимо таблицю, яка використовуватиме її як посилання на наступний підручник.
У цьому посібнику ми збираємося створити таблицю "worker_guru" з 6 стовпцями.
З наведеного вище знімка екрана,
- Ми створюємо таблицю "staff_guru" із 6 значеннями стовпців, такими як Id, Ім'я, Вік, Адреса, Зарплата, Департамент, яка належить працівникам, присутнім в організації "guru".
- На цьому кроці ми завантажуємо дані до таблиці staff_guru. Дані, які ми збираємось завантажити, будуть розміщені у файлі Employees.txt
Замовлення за запитом:
Синтаксис ORDER BY у HiveQL подібний до синтаксису ORDER BY у мові SQL.Впорядкувати за - це речення, яке ми використовуємо з оператором "SELECT" у запитах Hive, що допомагає сортувати дані. Упорядкування за реченням використовуйте стовпці в таблицях вуликів для сортування окремих значень стовпців, згаданих у "Порядок за" Для будь-якої назви стовпця ми визначаємо порядок за реченням, запит вибирає та відображає результати за зростанням або спаданням певних значень стовпців.
Якщо згаданий порядок за полем є рядком, тоді він відображатиме результат у лексикографічному порядку. На задній частині він повинен бути переданий на один редуктор.
З наведеного вище знімка екрану ми можемо спостерігати наступне
- Це запит, який виконується в таблиці "worker_guru" з реченням ORDER BY із відділом, як визначено назвою стовпця ORDER BY.
"Відділ" є рядком, тому він відображатиме результати на основі лексикографічного порядку.
- Це фактичний результат для запиту. Якщо ми спостерігаємо це належним чином, ми можемо побачити, що він отримує результати, що відображаються на основі стовпця Департаменту, такого як АДМІНІСТРАТОР, Фінанси та ін.
Запит:
SELECT * FROM employees_guru ORDER BY Department;
Групувати за запитом:
За групою пропозицій використовуються стовпці в таблицях вуликів для групування певних значень стовпців, зазначених у групі за. Для будь-якої назви стовпця ми визначаємо речення "groupby", запит вибирає та відображає результати шляхом групування певних значень стовпців.
Наприклад, на знімку екрана нижче він відображатиме загальну кількість працівників, присутніх у кожному відділі. Тут ми маємо "Відділ" як групу за значенням.
На наведеному вище скріншоті ми спостерігаємо наступне
- Це запит, який виконується в таблиці "worker_guru" із реченням GROUP BY із відділом, як визначено назвою стовпця GROUP BY.
- Результатом, що тут показано, є назва відділу, а співробітники підраховують у різних відділах. Тут усі співробітники належать до конкретного підрозділу, згруповані за результатами та відображаються в них. Отже, результатом є назва відділу із загальною кількістю працівників, присутніх у кожному відділі.
Запит:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Сортувати за:
За допомогою пункту сортування за іменами стовпців таблиць Hive виконується сортування результату. Ми можемо згадати DESC для сортування порядку за спаданням та ASC для порядку зростання сорту.
У цьому сортуванні він сортує рядки перед подачею на редуктор. Завжди сортувати за залежно від типів стовпців.
Наприклад, якщо типи стовпців є числовими, вони сортуватимуться у порядку чисел, якщо типи стовпців є рядковими, то сортуватиметься в лексикографічному порядку.
З наведеного вище знімка екрану ми можемо спостерігати наступне:
- Це запит, який виконується в таблиці "worker_guru" з реченням SORT BY з "id", як визначено ім'я стовпця SORT BY. Ми використовували ключове слово DESC.
- Отже, вихідні дані будуть відображатись у порядку зменшення "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.
З наведеного вище знімка екрану ми отримуємо такі спостереження:
- Це запит, який виконує речення CLUSTER BY щодо значення поля Id. Тут ми отримаємо сортування за значеннями Id.
- Він відображає ідентифікатори та імена, наявні в сортуванні guru_employees, упорядкованому за
Запит:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Розподілити за:
Розподіліть речення BY, яке використовується в таблицях, наявних у Hive. Hive використовує стовпці у Distribute by для розподілу рядків між редукторами. Усі стовпці Distribute BY переходять до того самого редуктора.
- Це гарантує, що кожен з N редукторів отримує діапазони стовпців, що не перекриваються
- Це не сортує результати кожного редуктора
З наведеного вище скріншоту ми можемо спостерігати наступне
- РОЗПОДІЛ РОБОТИ За умовою виконання ідентифікатора таблиці "empoloyees_guru"
- Результат, що показує ідентифікатор, ім'я. На задній частині він перейде на той самий редуктор
Запит:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;