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.

Crearea tabelului în Hive

Din captura de ecran de mai sus,

  1. 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”.
  2. 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.

Comandă după interogare

Din captura de ecran de mai sus, putem observa următoarele

  1. 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.
  2. 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.

Grupați după interogare

Din captura de ecran de mai sus, vom observa următoarele

  1. Este interogarea care este efectuată pe tabelul „employees_guru” cu clauza GROUP BY cu Departamentul definit ca numele coloanei GROUP BY.
  2. 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ă.

Filtrează după

Din captura de ecran de mai sus putem observa următoarele:

  1. 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.
  2. 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.

Cluster By

Din captura de ecran de mai sus obținem următoarele observații:

  1. Este interogarea care execută clauza CLUSTER BY pe valoarea câmpului Id. Aici va primi o sortare a valorilor Id.
  2. 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

Distribuie prin

Din captura de ecran de mai sus, putem observa următoarele

  1. DISTRIBUIRE PRIN Clauza care se execută pe Id-ul tabelului „empoloyees_guru”.
  2. 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;