Úľ poskytuje jazyk dotazovacieho typu SQL na účely ETL nad súborový systém Hadoop.
Jazyk Hive Query (HiveQL) poskytuje v prostredí Hive prostredie typu SQL na prácu s tabuľkami, databázami a dotazmi.
Môžeme mať iný typ Klauzúl spojených s Hive, aby sme mohli vykonávať manipuláciu s dátami iného typu a dopytovanie. Pre lepšiu konektivitu s rôznymi uzlami mimo prostredia. HIVE poskytuje tiež pripojenie JDBC.
Hive queries poskytuje nasledujúce funkcie:
- Dátové modelovanie, ako napríklad vytváranie databáz, tabuliek atď.
- Funkcie ETL, ako je extrakcia, transformácia a načítanie údajov do tabuliek
- Pripojí sa k zlúčeniu rôznych tabuliek s údajmi
- Užívateľsky špecifické vlastné skripty pre jednoduchosť kódu
- Rýchlejší dopytovací nástroj nad Hadoopom
V tomto článku sa dozviete
- Zoradiť podľa dotazu
- Zoskupiť podľa dopytu
- Triediť podľa
- Zoskupiť
- Distribuovať podľa
Vytvára sa tabuľka v úli
Predtým, ako začneme s našou hlavnou témou tohto tutoriálu, najskôr vytvoríme tabuľku, ktorá ho bude slúžiť ako referencia pre nasledujúci tutoriál.
Tu v tomto výučbe vytvoríme tabuľku „staff_guru“ so 6 stĺpcami.
Z vyššie uvedenej snímky obrazovky
- Vytvárame tabuľku „zamestnanci_guru“ so 6 hodnotami stĺpcov, ako sú Id, meno, vek, adresa, plat, oddelenie, ktorá patrí zamestnancom prítomným v organizácii „guru“.
- Tu v tomto kroku načítavame údaje do tabuľky zamestnanci_guru. Údaje, ktoré sa chystáme načítať, sa umiestnia do súboru Employees.txt
Zoradiť podľa dotazu:
Syntax ORDER BY v HiveQL je podobná syntaxe ORDER BY v jazyku SQL.Zoradiť podľa je klauzula, ktorú používame s príkazom „SELECT“ v dotazoch na úle, čo pomáha triediť údaje. Zoradiť podľa klauzuly použite stĺpce v tabuľkách Hive na zoradenie konkrétnych hodnôt stĺpcov uvedených v položke Zoradiť podľa. Pre akýkoľvek názov stĺpca, ktorý definujeme poradie podľa klauzuly, dotaz vyberie a zobrazí výsledky vzostupne alebo zostupne podľa jednotlivých hodnôt stĺpca.
Ak je uvedené zoradenie podľa polí reťazec, výsledok sa zobrazí v lexikografickom poradí. Na zadnom konci musí byť prevedený na jeden reduktor.
Zo snímky obrazovky vyššie môžeme pozorovať nasledovné
- Je to dopyt, ktorý vykonáva na tabuľke „zamestnanci_guru“ s klauzulou ORDER BY s definíciou oddelenia, ako je definované v stĺpci ORDER BY.
„Oddelenie“ je reťazec, takže bude zobrazovať výsledky na základe lexikografického poradia.
- Toto je skutočný výstup pre dopyt. Ak to pozorujeme správne, môžeme vidieť, že výsledky sa zobrazujú na základe stĺpca Oddelenie, napríklad ADMIN, Financie atď., Aby sa vykonal orderQuery.
Dopyt :
SELECT * FROM employees_guru ORDER BY Department;
Zoskupiť podľa dotazu:
Klauzula Zoskupiť podľa použite stĺpce v tabuľkách podregistrov na zoskupenie konkrétnych hodnôt stĺpcov uvedených v skupine podľa. Pre akýkoľvek názov stĺpca, ktorý definujeme klauzulu „groupby“, dopyt vyberie a zobrazí výsledky zoskupením konkrétnych hodnôt stĺpca.
Napríklad na nasledujúcom snímku obrazovky sa zobrazí celkový počet zamestnancov prítomných v jednotlivých oddeleniach. Tu máme „oddelenie“ ako skupinu podľa hodnoty.
Z vyššie uvedeného screenshotu budeme sledovať nasledujúce
- Je to dopyt, ktorý sa vykonáva v tabuľke „zamestnanci_guru“ s klauzulou GROUP BY s oddelením, ako je definované v názve stĺpca GROUP BY.
- Tu zobrazený výstup je názov oddelenia a počet zamestnancov sa počíta v rôznych oddeleniach. Tu sú všetci zamestnanci patriaci do konkrétneho oddelenia zoskupení podľa a zobrazené vo výsledkoch. Výsledkom je teda názov oddelenia s celkovým počtom zamestnancov prítomných v jednotlivých oddeleniach.
Dopyt:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Triediť podľa:
Klauzula Zoradiť podľa vykonáva názvy stĺpcov tabuliek Hive, aby sa výstup zoradil. Môžeme spomenúť DESC pre zoradenie v zostupnom poradí a ASC pre vzostupné zoradenie.
V tomto poradí zoradí riadky pred zavedením do reduktora. Vždy zoradiť podľa závisí od typu stĺpca.
Napríklad ak sú typy stĺpcov číselné, zoradí sa v číselnom poradí, ak sú typy stĺpcov reťazcové, zoradí sa v lexikografickom poradí.
Z vyššie uvedeného obrazovky môžeme sledovať nasledovné:
- Je to dopyt, ktorý pri vykonaní tabuľky „zamestnanci_guru“ s klauzulou SORT BY s „id“ definuje názov stĺpca SORT BY. Použili sme kľúčové slovo DESC.
- Zobrazený výstup bude teda v zostupnom poradí „id“.
Dopyt:
SELECT * from employees_guru SORT BY Id DESC;
Zoskupiť podľa:
Cluster By použité ako alternatíva pre klauzuly Distribute BY a Sort BY v Hive-QL.
Klauzula Cluster BY použitá v tabuľkách prítomných v úli. Hive používa stĺpce v Klastri na distribúciu riadkov medzi reduktory. Stĺpce Klastra BY prejdú k viacerým reduktorom.
- Zabezpečuje poradie triedenia hodnôt prítomných vo viacerých reduktoroch
Napríklad klauzula Cluster By uvedená v názve stĺpca Id tabuľky tabuľky zamestnanci_guru. Výstup pri vykonávaní tohto dotazu poskytne výsledky viacerým reduktorom na zadnom konci. Ale ako klientske rozhranie je to alternatívna klauzula pre Zoradiť aj Distribuovať podľa.
Toto je vlastne back-end proces, keď vykonávame dopyt s triedením podľa, zoskupovaním a klastrovaním podľa rámca redukcie mapy. Takže ak chceme ukladať výsledky do viacerých redukcií, ideme s Cluster By.
Z vyššie uvedenej snímky obrazovky dostávame nasledujúce pozorovania:
- Je to dopyt, ktorý vykonáva klauzulu CLUSTER BY na hodnote poľa Id. Tu to bude triediť hodnoty Id.
- Zobrazuje Id a mená prítomné v guru_employees zoradenom podľa
Dopyt:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Distribuovať podľa:
Distribuujte klauzulu BY použitú na tabuľkách prítomných v úli. Úľ používa stĺpce v priečinku Distribute by na distribúciu riadkov medzi reduktory. Všetky stĺpce Distribute BY prejdú na rovnakú redukciu.
- Zaisťuje, aby každý z N reduktorov dostal neprekrývajúce sa rozsahy stĺpca
- Netriedi výstup každého reduktora
Z vyššie uvedeného screenshotu môžeme sledovať nasledujúce
- DISTRIBÚCIA PODĽA klauzuly vykonávajúcej sa na Id tabuľky „empoloyees_guru“
- Výstup zobrazujúci ID, meno. Na zadnej strane pôjde k rovnakému reduktoru
Dopyt:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;