Interogări de stup: comandați după, grupați după, distribuiți după, grupați după exemple

Cuprins:

Anonim

Hive oferă un limbaj de interogare de tip SQL în scopul ETL deasupra sistemului de fișiere Hadoop.

Hive Query language (HiveQL) oferă mediu de tip SQL în Hive pentru a lucra cu tabele, baze de date, interogări.

Putem avea un tip diferit de Clauze asociate cu Hive pentru a efectua diferite tipuri de manipulări și interogări de date. Pentru o conectivitate mai bună cu diferite noduri în 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 în partea de sus a Hadoop

În acest articol, veți învăța-

  • Comandați prin interogare
  • Grupați după interogare
  • Filtrează după
  • Cluster By
  • Distribuiți prin

Crearea tabelului în stup

Înainte de a începe cu subiectul nostru principal pentru acest tutorial, mai întâi vom crea un tabel pentru al utiliza ca referințe pentru următorul tutorial.

Aici, în acest tutorial, vom crea tabelul „angajați_guru” cu 6 coloane.

Din captura de ecran de mai sus,

  1. Creăm tabelul „angajați_guru” cu 6 valori de coloană precum Id, Nume, Vârstă, Adresă, Salariu, Departament, care aparține angajaților prezenți în organizația „guru”.
  2. Aici, în acest pas, încărcăm date în tabelul angajați_guru. Datele pe care le vom încărca vor fi plasate în fișierul Employees.txt

Comandă după interogare:

Sintaxa ORDER BY în HiveQL este similară cu sintaxa ORDER BY în limbajul SQL.

Ordinea după este clauza pe care o folosim cu instrucțiunea „SELECT” în interogările Hive, care ajută la sortarea datelor. Ordonarea prin clauză utilizează coloanele din tabelele Hive pentru sortarea anumitor valori ale coloanelor menționate cu Ordinea după. Pentru orice nume de coloană definim ordinea prin clauză, interogarea va selecta și afișa rezultatele crescând sau descrescând valorile coloanei particulare.

Dacă ordinea menționată după câmp este un șir, atunci va afișa rezultatul în ordine lexicografică. În partea din spate, trebuie să fie transmisă unui singur reductor.

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

  1. Este interogarea care efectuează pe tabelul „angajați_guru” cu clauza ORDER BY cu Departamentul așa cum este definit numele coloanei ORDER BY.

    „Departamentul” este Șir, așa că 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 a putea fi efectuate.

Interogare:

SELECT * FROM employees_guru ORDER BY Department;

Grupați după interogare:

Grupați prin clauză utilizați coloane pe tabelele Hive pentru a grupa anumite valori ale coloanelor menționate împreună cu grupul de Pentru orice nume de coloană definim o clauză „groupby”, interogarea va selecta și afișa rezultatele prin gruparea valorilor coloanei particulare.

De exemplu, în ecranul de mai jos va afișa numărul total de angajați prezenți în fiecare departament. Aici avem „Departamentul” ca grup după valoare.

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

  1. Este interogarea care se efectuează pe tabelul „angajați_guru” cu clauza GROUP BY cu Departamentul așa cum este definit 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 care 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.

Interogare:

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

Filtrează după:

Sortare după clauză se execută pe numele coloanelor tabelelor Hive pentru a sorta ieșirea. Putem menționa DESC pentru sortarea ordinii în ordine descrescătoare și mențiunea ASC pentru ordinea crescătoare a sortării.

În acest fel, va sorta rândurile înainte de a alimenta reductorul. Sortați întotdeauna în funcție de tipurile de coloane.

De exemplu, dacă tipurile de coloane sunt numerice, acesta va sorta în ordine numerică, dacă tipurile de coloane sunt șiruri, va sorta în ordine lexicografică.

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

  1. Este interogarea care efectuează pe tabel „angajați_guru” cu clauza SORT BY cu „id” așa cum definește SORT BY numele coloanei. Am folosit cuvântul cheie DESC.
  2. Deci ieșirea afișată va fi în ordinea descrescătoare a "id".

Interogare:

SELECT * from employees_guru SORT BY Id DESC;

Cluster de:

Cluster By utilizat ca alternativă atât pentru clauzele Distribute BY, cât și Sort BY în Hive-QL.

Clauză CLuster BY utilizată pe tabelele prezente în Hive. Hive folosește coloanele din cluster prin distribuirea rândurilor între reductoare. Coloanele Cluster BY vor merge la reductoarele multiple.

  • Asigură sortarea ordinelor valorilor prezente în mai multe reductoare

De exemplu, clauza Cluster By menționată în numele coloanei Id a tabelei tabelului employ_guru. Ieșirea la executarea acestei interogări va da rezultate mai multor reductoare din partea din spate. Dar, ca front-end, este o clauză alternativă atât pentru Sortare după, cât și Distribuire după.

Acesta este de fapt procesul de back-end atunci când efectuăm o interogare cu sortare după, grupare după, și grupare după în ceea ce privește cadrul de reducere a hărții. Deci, dacă dorim să stocăm rezultatele în mai multe reductoare, mergem cu Cluster By.

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

  1. Este interogarea care execută clauza CLUSTER BY pe valoarea câmpului Id. Aici va obține un fel de valori Id.
  2. Afișează ID-ul și numele prezente în sortarea guru_employees ordonată după

Interogare:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Distribuiți de:

Distribuiți clauza BY utilizată pe tabelele prezente în Hive. Hive folosește coloanele din Distribuiți prin pentru a distribui rândurile între reductoare. Toate coloanele Distribuie BY vor merge la același reductor.

  • Se asigură că fiecare dintre N reductoare primește domenii de coloană care nu se suprapun
  • Nu sortează ieșirea fiecărui reductor

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

  1. DISTRIBUI DE Clauză 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

Interogare:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;