Hive pruža jezik upita SQL tipa za ETL svrhu povrh Hadoop datotečnog sustava.
Jezik upita Hive (HiveQL) pruža okruženje tipa SQL u Hiveu za rad s tablicama, bazama podataka i upitima.
Možemo imati različitu vrstu klauzula povezanih s Hiveom za obavljanje različitih vrsta manipulacija podacima i upita. Za bolju povezanost s različitim čvorovima izvan okoline. HIVE pruža i JDBC povezivost.
Upiti za košnice pružaju sljedeće značajke:
- Modeliranje podataka poput stvaranja baza podataka, tablica itd.
- ETL funkcionalnosti poput ekstrakcije, transformacije i učitavanja podataka u tablice
- Pridružuje se spajanju različitih tablica podataka
- Korisničke prilagođene skripte radi jednostavnosti koda
- Brži alat za postavljanje upita na vrhu Hadoopa
U ovom ćete članku naučiti-
- Poredaj po upitu
- Grupiraj prema upitu
- Poredaj po
- Klaster
- Distribuirajte putem
Izrada tablice u košnici
Prije nego što započnemo s našom glavnom temom ovog vodiča, prvo ćemo stvoriti tablicu koja će je koristiti kao reference za sljedeću lekciju.
Ovdje u ovom vodiču stvorit ćemo tablicu "zaposlenici_guru" sa 6 stupaca.
Iz gornjeg snimka zaslona,
- Izrađujemo tablicu "zaposleni_guru" sa 6 vrijednosti u stupcima kao što su Id, Ime, Dob, Adresa, Plaća, Odjel, koja pripada zaposlenicima koji su prisutni u organizaciji "guru".
- Ovdje u ovom koraku učitavamo podatke u tablicu zaposlenika_guru. Podaci koje ćemo učitati bit će smješteni u datoteku Employees.txt
Poredaj prema upitu:
Sintaksa ORDER BY u HiveQL slična je sintaksi ORDER BY u SQL jeziku.Poredak po je klauzula koju koristimo s naredbom "SELECT" u upitima Hive, koja pomaže u sortiranju podataka. Klauzula Poredaj upotrijebi stupce na tablicama Košnica za sortiranje pojedinih vrijednosti stupaca spomenutih uz Poredaj po. Bez obzira na naziv stupca, klauzulom definiramo redoslijed, upit odabire i prikazuje rezultate uzlaznim ili silaznim redoslijedom određene vrijednosti stupaca.
Ako je spomenuti poredak po polju niz, tada će rezultat prikazati u leksikografskom redoslijedu. Sa stražnje strane mora se prenijeti na jedan reduktor.
Iz gornjeg snimka zaslona možemo uočiti sljedeće
- To je upit koji se izvodi na tablici "zaposlenici_guru" s klauzulom ORDER BY s odjelom kako je definirano nazivom stupca ORDER BY.
"Odjel" je String pa će prikazati rezultate na temelju leksikografskog poretka.
- Ovo je stvarni izlaz za upit. Ako ga pravilno promatramo, možemo vidjeti da prikazuje rezultate na temelju stupca Odjela kao što su ADMINISTRATURA, Financije i tako dalje kako bi se mogao izvršiti upit.
Upit:
SELECT * FROM employees_guru ORDER BY Department;
Grupiraj prema upitu:
Klauzula po grupama koristi stupce na tablicama košnica za grupiranje određenih vrijednosti stupaca spomenutih s grupom po. Za bilo koje ime stupca definiramo klauzulu "groupby", upit će odabrati i prikazati rezultate grupiranjem određenih vrijednosti stupaca.
Na primjer, na snimci zaslona u nastavku prikazat će se ukupan broj zaposlenika prisutnih u svakom odjelu. Ovdje imamo "Odjel" kao Grupu po vrijednosti.
Iz gornjeg snimka zaslona primijetit ćemo sljedeće
- To je upit koji se izvodi na tablici "zaposlenici_guru" s klauzulom GROUP BY s odjelom kao što je definirano nazivom stupca GROUP BY.
- Rezultat koji se ovdje prikazuje je naziv odjela, a zaposlenici 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.
Upit:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Poredaj po:
Klauzula sortiranja prema nazivima stupaca tablica košnica vrši se za sortiranje rezultata. Možemo spomenuti DESC za sortiranje redoslijeda u opadajućem redoslijedu i ASC za rastući poredak te vrste.
Na ovaj način sortirat će redove prije dodavanja na reduktor. Uvijek sortiraj po ovisno o vrstama stupaca.
Na primjer, ako su vrste stupaca numeričke, sortirat će se numeričkim redoslijedom, ako su vrste stupaca niz, sortirat će se leksikografskim redoslijedom.
Iz gornjeg snimka zaslona možemo uočiti sljedeće:
- To je upit koji se izvodi na tablici "zaposleni_guru" s klauzulom SORT BY s "id" kako definira naziv stupca SORT BY. Koristili smo ključnu riječ DESC.
- Tako će se prikazani izlaz nalaziti u padajućem redoslijedu od "id".
Upit:
SELECT * from employees_guru SORT BY Id DESC;
Klaster Autor:
Klaster se koristi kao alternativa i za klauzule Distribute BY i Sort BY u Hive-QL.
Klauzula BY klauzula koja se koristi na tablicama prisutnim u Hiveu. Hive koristi stupce u Klasteru za distribuciju redaka među reduktorima. Stupci Cluster BY ići će na više reduktora.
- Osigurava redoslijed sortiranja vrijednosti prisutnih u više reduktora
Na primjer, klauzula By klauzula spomenuta na imenu stupca Id tablice tablica zaposlenici_guru. Izlaz pri izvršavanju ovog upita dat će rezultate više reduktorima na stražnjem kraju. Ali kao prednji kraj to je alternativna klauzula i za Poredaj po i Za distribuciju.
Ovo je zapravo back end proces kada izvodimo upit s razvrstavanjem po, grupiranjem i grupiranjem prema u smislu okvira za smanjenje karte. Dakle, ako želimo pohraniti rezultate u više reduktora, idemo s Cluster By.
Iz gornjeg snimka zaslona dobivamo sljedeća zapažanja:
- Upit je taj koji izvodi klauzulu BY na vrijednosti polja Id. Ovdje će se dobiti sortiranje vrijednosti Id.
- Prikazuje Id i Imena prisutna u sortiranju guru_employees poredanih po
Upit:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Distribuirajte prema:
Distribuirajte BY klauzulu koja se koristi na tablicama prisutnim u Hiveu. Hive koristi stupce u Distribute by za distribuciju redaka među reduktorima. Svi stupci Distribuiraj BY ići će na isti reduktor.
- Osigurava da svaki od N reduktora dobije neprekidne domete stupaca
- Ne sortira izlaz svakog reduktora
Iz gornjeg snimka zaslona možemo uočiti sljedeće
- DISTRIBUTE BY Klauzula koja se izvodi na Id tablice "empoloyees_guru"
- Izlaz koji prikazuje Id, Ime. Na stražnjem kraju ići će na isti reduktor
Upit:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;