Hive Upiti: Poredaj po, Grupiraj po, Distribuiraj po, Cluster Po primjerima
Hive osim toga pruža SQL upitni jezik za ETL svrhu Hadoop sustav datoteka.
Hive Query language (HiveQL) pruža okruženje tipa SQL u Hiveu za rad s tablicama, bazama podataka, upitima.
Možemo imati različite vrste klauzula povezanih s Hiveom za izvođenje različitih tipova manipulacija podacima i postavljanja upita. Za bolju povezanost s različitim čvorovima izvan okruženja. HIVE također pruža JDBC povezivost.
Hive queries nudi sljedeće značajke:
- Modeliranje podataka kao što je stvaranje baza podataka, tablica itd.
- Funkcionalnosti ETL-a kao što su ekstrakcija, transformacija i učitavanje podataka u tablice
- Pridružuje za spajanje različitih podatkovnih tablica
- Korisničke prilagođene skripte za jednostavnost koda
- Brži alat za postavljanje upita povrh Hadoopa
Stvaranje tablice u košnici
Prije nego započnemo s našom glavnom temom za ovaj vodič, prvo ćemo izraditi tablicu koju ćemo koristiti kao reference za sljedeći vodič.
Ovdje u ovom tutorialu ćemo stvoriti tablicu "employees_guru" sa 6 stupaca.
Iz gornje snimke zaslona,
- Kreiramo tablicu “employees_guru” sa 6 vrijednosti stupaca kao što su Id, Ime, Age, Address, Salary, Department, koja pripada zaposlenicima prisutnim u organizaciji “guru”.
- Ovdje u ovom koraku učitavamo podatke u tablicu zaposlenih_guru. Podaci koje ćemo učitati bit će smješteni u datoteku Employees.txt
Naručite po upitu
Sintaksa ORDER BY u HiveQL-u slična je sintaksi ORDER BY u SQL Jezik.
Order by je klauzula koju koristimo s naredbom "SELECT". Hive upiti, koji pomaže sortirati podatke. Klauzula Order by koristi stupce u Hive tablicama za sortiranje određenih vrijednosti stupaca spomenutih uz Order by. Za koji god naziv stupca definiramo redoslijed po klauzuli, upit će odabrati i prikazati rezultate uzlaznim ili silaznim redoslijedom pojedinih vrijednosti stupca.
Ako je navedeni redoslijed po polju niz, tada će prikazati rezultat u leksikografskom redu. Na stražnjem kraju, mora se prenijeti na jedan reduktor.
Iz gornje snimke zaslona možemo uočiti sljedeće
- To je upit koji se izvodi na tablici “employees_guru” s klauzulom ORDER BY s definiranim Odjelom ORDER BY naziv stupca.”Department” je String tako da će prikazati rezultate na temelju leksikografskog reda.
- Ovo je stvarni izlaz za upit. Ako ga pravilno promatramo, možemo vidjeti da dobiva rezultate prikazane na temelju stupca Odjela kao što su ADMIN, Financije i tako dalje kako bi se Query mogao izvesti.
Upit:
SELECT * FROM employees_guru ORDER BY Department;
Grupiraj po upitu
Klauzula Group by koristi stupce u Hive tablicama za grupiranje određenih vrijednosti stupaca spomenutih s group by. Za koji god naziv stupca definiramo klauzulu "groupby", upit će odabrati i prikazati rezultate grupiranjem određenih vrijednosti stupca.
Na primjer, na donjoj snimci zaslona prikazat će se ukupan broj zaposlenika prisutnih u svakom odjelu. Ovdje imamo "Odjel" kao Grupu po vrijednosti.
Iz gornje snimke zaslona primijetit ćemo sljedeće
- To je upit koji se izvodi na tablici "employees_guru" s klauzulom GROUP BY s definiranim nazivom odjela GROUP BY stupca.
- Ispis koji se ovdje prikazuje je naziv odjela, a zaposlenici se broje u različitim odjelima. Ovdje su svi zaposlenici koji pripadaju određenom odjelu grupirani i prikazani u rezultatima. Dakle, rezultat je naziv odjela s ukupnim brojem zaposlenika prisutnih u svakom odjelu.
upita:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Poredaj po
Klauzula Sortiraj po izvodi nazive stupaca Hive tablica za sortiranje izlaza. Možemo spomenuti DESC za sortiranje redoslijeda silaznim redoslijedom i spomenuti ASC za uzlazni redoslijed sortiranja.
U ovom sortiranju poredat će redove prije dodavanja u reduktor. Uvijek sortiraj prema ovisno o vrsti stupaca.
Na primjer, ako su tipovi stupaca numerički, sortirat će se numeričkim redoslijedom, ako su tipovi stupaca nizovi, sortirati će se leksikografskim redoslijedom.
Iz gornje snimke zaslona možemo vidjeti sljedeće:
- To je upit koji se izvodi na tablici "employees_guru" s klauzulom SORT BY s "id" kao definiranjem naziva stupca SORT BY. Koristili smo ključnu riječ DESC.
- Tako će prikazani izlaz biti u silaznom redoslijedu "id".
upita:
SELECT * from employees_guru SORT BY Id DESC;
Cluster By
Cluster By se koristi kao alternativa za klauzule Distribute BY i Sort BY u Hive-QL.
Cluster BY klauzula koja se koristi na tablicama prisutnima u Hiveu. Hive koristi stupce u Cluster za raspodjelu redova među reduktorima. Cluster BY stupci će ići na više reduktora.
- Osigurava redoslijed sortiranja vrijednosti prisutnih u više reduktora
Na primjer, Cluster Prema klauzuli navedenoj u nazivu stupca Id tablice, tablice zaposlenih_guru. Izlaz prilikom izvršavanja ovog upita dat će rezultate višestrukim reduktorima na stražnjem kraju. Ali kao prednji kraj, to je alternativna klauzula i za Sortiraj po i za Distribuciju po.
Ovo je zapravo pozadinski proces kada izvodimo upit s sortiranjem po, grupiranjem i grupiranjem u smislu okvira za smanjivanje karte. Dakle, ako želimo pohraniti rezultate u više reduktora, idemo s Cluster Do.
Iz gornje snimke zaslona dobivamo sljedeća zapažanja:
- To je upit koji izvodi klauzulu CLUSTER BY na vrijednosti polja Id. Ovdje će dobiti sortiranje Id vrijednosti.
- Prikazuje ID i imena prisutna u guru_employees sortirani prema
upita:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Distribuirati do
Klauzula Distribute BY koja se koristi na tablicama prisutnima u Hiveu. Hive koristi stupce u Distribute by za raspodjelu redaka među reduktorima. Svi stupci Distribute BY ići će u isti reduktor.
- Osigurava da svaki od N reduktora dobije raspone stupaca koji se ne preklapaju
- Ne sortira izlaz svakog reduktora
Iz gornje snimke zaslona možemo vidjeti sljedeće
- DISTRIBUTE BY Klauzula koja se izvodi na ID tablice "empoloyees_guru".
- Izlaz prikazuje ID, ime. Na stražnjem kraju će ići na isti reduktor
upita:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;