Hive nudi datotečni jezik za poizvedbe tipa SQL za namen ETL na vrhu datotečnega sistema Hadoop.
Hive Query language (HiveQL) zagotavlja okolje tipa SQL v Hive za delo s tabelami, bazami podatkov, poizvedbami.
Za izvajanje manipulacij in poizvedovanja z različnimi vrstami podatkov imamo lahko s Hivejem povezano različno klavzulo. Za boljšo povezljivost z različnimi vozlišči zunaj okolja. HIVE zagotavlja tudi povezljivost JDBC.
Hive poizvedbe nudijo naslednje funkcije:
- Modeliranje podatkov, kot je ustvarjanje baz podatkov, tabel itd.
- Funkcije ETL, kot so ekstrakcija, pretvorba in nalaganje podatkov v tabele
- Združi za združevanje različnih podatkovnih tabel
- Uporabniški skripti po meri za lažjo kodo
- Hitrejše orodje za poizvedbe na vrhu Hadoopa
V tem članku boste izvedeli-
- Razvrsti po poizvedbi
- Razvrsti po poizvedbi
- Razvrsti po
- Grozd avtor
- Razdeli po
Ustvarjanje tabele v panju
Preden začnemo z našo glavno temo za to vadnico, bomo najprej ustvarili tabelo, ki jo bomo uporabili kot reference za naslednjo vadnico.
Tu v tej vadnici bomo ustvarili tabelo "staff_guru" s 6 stolpci.
Iz zgornjega posnetka zaslona
- Ustvarjamo tabelo "staff_guru" s 6 vrednostmi stolpcev, kot so Id, Ime, Starost, Naslov, Plača, Oddelek, ki pripada zaposlenim v organizaciji "guru".
- V tem koraku nalagamo podatke v tabelo zaposleni_guru. Podatki, ki jih bomo naložili, bodo shranjeni v datoteko Employees.txt
Razvrsti po poizvedbi:
Sintaksa ORDER BY v HiveQL je podobna sintaksi ORDER BY v jeziku SQL.Razvrsti po je stavek, ki ga uporabljamo pri stavku "SELECT" v poizvedbah Hive, ki pomaga razvrščati podatke. Za razvrščanje po klavzuli uporabite stolpce v tabelah Panj za razvrščanje določenih vrednosti stolpcev, omenjenih v razvrsti po Ne glede na ime stolpca določimo vrstni red s klavzulo, poizvedba izbere in prikaže rezultate z naraščajočim ali padajočim vrstnim redom določenih vrednosti stolpcev.
Če je omenjeni vrstni red po nizu, bo rezultat prikazan v leksikografskem vrstnem redu. Na zadnji strani ga je treba prenesti na en sam reduktor.
Iz zgornjega posnetka zaslona lahko opazimo naslednje
- To je poizvedba, ki deluje v tabeli "zaposleni_guru" s stavkom ORDER BY z oddelkom, kot je določeno z imenom stolpca ORDER BY.
"Oddelek" je niz, zato bo prikazal rezultate glede na leksikografski vrstni red.
- To je dejanski izhod za poizvedbo. Če ga pravilno opazujemo, lahko vidimo, da se prikažejo rezultati na podlagi stolpca oddelka, kot so ADMINISTRACIJA, Finance in tako naprej, da se izvede poizvedba.
Poizvedba:
SELECT * FROM employees_guru ORDER BY Department;
Razvrsti po poizvedbi:
Klavzula za razvrščanje po skupinah uporablja stolpce v tabelah Panj za razvrščanje določenih vrednosti stolpcev, omenjenih s skupino, po. Ne glede na ime stolpca, ki ga definiramo s klavzulo "groupby", bo poizvedba izbrala in prikazala rezultate z združevanjem določenih vrednosti stolpcev.
Na primer, na spodnjem posnetku zaslona bo prikazano skupno število zaposlenih, prisotnih v posameznem oddelku. Tu imamo "Oddelek" kot skupino po vrednosti.
Na zgornjem posnetku zaslona bomo opazili naslednje
- To je poizvedba, ki se izvede v tabeli "zaposleni_guru" s stavkom GROUP BY z oddelkom, kot je določeno ime stolpca GROUP BY.
- Rezultat, ki je prikazan tukaj, je ime oddelka, zaposleni pa štejejo v različnih oddelkih. Tu so vsi zaposleni v določenem oddelku razvrščeni po skupinah in prikazani v rezultatih. Rezultat je torej ime oddelka s skupnim številom zaposlenih v posameznem oddelku.
Poizvedba:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Razvrsti po:
Klavzula razvrščanja po izvedbi imen stolpcev tabel panj razvrsti izhod. Za razvrščanje vrstnega reda po padajočem vrstnem redu lahko omenimo DESC, za naraščajoči vrstni red pa ASC.
Pri tej razvrstitvi bo vrstice razvrstil pred podajanjem v reduktor. Vedno razvrsti glede na vrsto stolpca.
Če so na primer vrste stolpcev številske, bo razvrščeno po številskem vrstnem redu, če so vrste stolpcev nizovne, pa bo razvrščeno po leksikografskem vrstnem redu.
Iz zgornjega posnetka zaslona lahko opazimo naslednje:
- To je poizvedba, ki deluje v tabeli "zaposleni_guru" s stavkom SORT BY z "id", kot je določeno ime stolpca SORT BY. Uporabili smo ključno besedo DESC.
- Prikazani izhod bo torej v padajočem vrstnem redu "id".
Poizvedba:
SELECT * from employees_guru SORT BY Id DESC;
Grozd avtor:
Cluster By, ki se uporablja kot alternativa za klavzuli Distribute BY in Sort BY v Hive-QL.
Klavzula Cluster BY, ki se uporablja v tabelah, prisotnih v Hive. Hive uporablja stolpce v gruči tako, da vrstice razdeli med reduktorje. Stolpci grozda BY bodo preusmerjeni na več reduktorjev.
- Zagotavlja vrstni red razvrščanja vrednosti, prisotnih v več reduktorjih
Na primer, klavzula Cluster By, omenjena v imenu stolpca Id tabele table_guru. Rezultat pri izvajanju te poizvedbe bo na zadnjem koncu dal več pomanjševalcem. Toda kot prednji del je alternativna klavzula tako za Razvrsti po kot Porazdeli po.
To je pravzaprav zadnji konec postopka, ko izvedemo poizvedbo z razvrščanjem po, razvrščanjem po skupinah in razvrščanjem v skupine glede na okvir za zmanjšanje zemljevidov Torej, če želimo rezultate shraniti v več reduktorjev, se odločimo za Cluster By.
Iz zgornjega posnetka zaslona dobimo naslednja opažanja:
- To je poizvedba, ki izvede vrednost CLUSTER BY za vrednost polja Id. Tukaj bomo dobili razvrstitev glede vrednosti Id.
- Prikaže Id in Imena, ki so prisotna v razvrščanju guru_employees, razvrščenih po
Poizvedba:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Razdeli po:
Razdeli klavzulo BY, ki se uporablja v tabelah, prisotnih v Hive. Hive uporablja stolpce v Distribute by za distribucijo vrstic med reduktorji. Vsi stolpci Distribute BY bodo šli na isti reduktor.
- Zagotavlja, da vsak od N reduktorjev dobi neprekrivajoča se območja stolpca
- Ne razvrsti izhoda vsakega reduktorja
Iz zgornjega posnetka zaslona lahko opazimo naslednje
- DISTRIBUTE BY Klavzula, ki deluje na Id tabele "empoloyees_guru"
- Rezultat prikazuje Id, Ime. Na zadnji strani bo šel na isti reduktor
Poizvedba:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;