Interogări Hive: ordonați după, grupați după, distribuiți după, Cluster Prin Exemple
Hive oferă un limbaj de interogare de tip SQL în scopul ETL Hadoop Sistemul de fișiere.
Limbajul Hive Query (HiveQL) oferă un mediu de tip SQL în Hive pentru a lucra cu tabele, baze de date, interogări.
Putem avea un alt tip de clauze asociate cu Hive pentru a efectua manipulări și interogări de date de tip diferit. Pentru o mai bună conectivitate cu diferite noduri din afara mediului. HIVE oferă și conectivitate JDBC.
Interogările Hive oferă următoarele caracteristici:
- Modelarea datelor, cum ar fi crearea de baze de date, tabele etc.
- Funcționalități ETL, cum ar fi extragerea, transformarea și încărcarea datelor în tabele
- Se alătură pentru a îmbina diferite tabele de date
- Scripturi personalizate specifice utilizatorului pentru ușurința codului
- Instrument de interogare mai rapid pe lângă Hadoop
Crearea tabelului în Hive
Înainte de a începe cu subiectul nostru principal pentru acest tutorial, mai întâi vom crea un tabel pentru a-l folosi ca referințe pentru următorul tutorial.
Aici, în acest tutorial, vom crea tabelul „employees_guru” cu 6 coloane.
Din captura de ecran de mai sus,
- Creăm tabelul „employees_guru” cu valori de 6 coloane precum Id, Nume, Vârstă, Adresă, Salar, Departament, care aparține angajaților prezenți în organizația „guru”.
- Aici, în acest pas, încărcăm date în tabelul employees_guru. Datele pe care urmează să le încărcăm vor fi plasate în fișierul Employees.txt
Comandă prin interogare
Sintaxa ORDER BY din HiveQL este similară cu sintaxa ORDER BY din SQL limba.
Order by este clauza pe care o folosim cu instrucțiunea „SELECT”. Interogări de stup, care ajută la sortarea datelor. Ordonare după clauză utilizați coloanele din tabelele Hive pentru a sorta anumite valori ale coloanelor menționate cu Ordonare după. Indiferent de numele coloanei pe care definim ordinea după clauză, interogarea va selecta și va afișa rezultatele prin ordine crescătoare sau descrescătoare a anumitor valori ale coloanei.
Dacă ordinea menționată după câmp este un șir, atunci va afișa rezultatul în ordine lexicografică. La capătul din spate, trebuie să fie transmis la un singur reductor.
Din captura de ecran de mai sus, putem observa următoarele
- Este interogarea care se execută pe tabelul „employees_guru” cu clauza ORDER BY cu Departamentul definit ca numele coloanei ORDER BY.”Departament” este String, astfel încât va afișa rezultatele pe baza ordinii lexicografice.
- Aceasta este rezultatul real pentru interogare. Dacă îl observăm în mod corespunzător, putem vedea că obține rezultate afișate pe baza coloanei Departament, cum ar fi ADMIN, Finanțe și așa mai departe, pentru ca interogarea să fie efectuată.
Interogare:
SELECT * FROM employees_guru ORDER BY Department;
Grupați după interogare
Grupați după clauză, utilizați coloanele din tabelele Hive pentru a grupa anumite valori ale coloanelor menționate cu grupul de. Pentru orice nume de coloană definim o clauză „groupby”, interogarea va selecta și afișa rezultatele prin gruparea anumitor valori ale coloanei.
De exemplu, în captura de ecran de mai jos va afișa numărul total de angajați prezenți în fiecare departament. Aici avem „Departament” ca grup după valoare.
Din captura de ecran de mai sus, vom observa următoarele
- Este interogarea care este efectuată pe tabelul „employees_guru” cu clauza GROUP BY cu Departamentul definit ca numele coloanei GROUP BY.
- Rezultatul afișat aici este numele departamentului, iar angajații numără în diferite departamente. Aici toți angajații aparțin departamentului specific sunt grupați și afișați în rezultate. Deci rezultatul este numele departamentului cu numărul total de angajați prezenți în fiecare departament.
Solicitare:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Filtrează după
Clauza Sort by funcționează pe numele coloanelor din tabelele Hive pentru a sorta rezultatul. Putem menționa DESC pentru sortarea în ordine descrescătoare și ASC pentru ordinea crescătoare a sortării.
În acest fel, va sorta rândurile înainte de a alimenta reductorul. Sortarea întotdeauna după depinde de tipurile de coloane.
De exemplu, dacă tipurile de coloane sunt numerice, se va sorta în ordine numerică dacă tipurile de coloane sunt șir, se va sorta în ordine lexicografică.
Din captura de ecran de mai sus putem observa următoarele:
- Este interogarea care efectuează pe tabelul „employees_guru” cu clauza SORT BY cu „id” așa cum definește SORT BY numele coloanei. Am folosit cuvântul cheie DESC.
- Deci rezultatul afișat va fi în ordinea descrescătoare a „id”.
Solicitare:
SELECT * from employees_guru SORT BY Id DESC;
Cluster By
Cluster Folosit ca alternativă pentru ambele clauze Distribuite BY și Sort BY în Hive-QL.
Cluster Clauza BY folosită pe tabelele prezente în Hive. Hive folosește coloanele în Cluster prin a distribui rândurile între reductoare. Cluster Coloanele BY vor merge la reductoarele multiple.
- Asigură ordine de sortare a valorilor prezente în mai multe reductoare
De exemplu, Cluster Prin clauza menționată pe numele coloanei Id din tabelul employees_guru table. Ieșirea la executarea acestei interogări va da rezultate mai multor reductori din partea din spate. Dar, ca front-end, este o clauză alternativă atât pentru Sort By, cât și pentru Distribute By.
Acesta este de fapt un proces back-end atunci când efectuăm o interogare cu sortare, grupare și grupare în ceea ce privește cadrul de reducere a hărții. Deci, dacă vrem să stocăm rezultatele în mai multe reductoare, mergem cu Cluster Prin.
Din captura de ecran de mai sus obținem următoarele observații:
- Este interogarea care execută clauza CLUSTER BY pe valoarea câmpului Id. Aici va primi o sortare a valorilor Id.
- Afișează ID-ul și numele prezente în sortarea guru_employees ordonată după
Solicitare:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Distribuie prin
Clauza Distribuite BY folosită pe tabelele prezente în Hive. Hive folosește coloanele din Distribuie prin pentru a distribui rândurile între reductori. Toate coloanele Distribuite BY vor merge la același reductor.
- Se asigură că fiecare dintre N reductori are intervale de coloană care nu se suprapun
- Nu sortează ieșirea fiecărui reductor
Din captura de ecran de mai sus, putem observa următoarele
- DISTRIBUIRE PRIN Clauza care se execută pe Id-ul tabelului „empoloyees_guru”.
- Ieșire care arată Id, Nume. La capătul din spate, va merge la același reductor
Solicitare:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;