Dotazy na podregistre: Zoradiť podľa, Zoskupiť podľa, Distribuovať podľa, Klaster podľa príkladov

Obsah:

Anonim

Úľ 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

  1. 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“.
  2. 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é

  1. 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.

  2. 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

  1. 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.
  2. 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é:

  1. 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.
  2. 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:

  1. Je to dopyt, ktorý vykonáva klauzulu CLUSTER BY na hodnote poľa Id. Tu to bude triediť hodnoty Id.
  2. 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

  1. DISTRIBÚCIA PODĽA klauzuly vykonávajúcej sa na Id tabuľky „empoloyees_guru“
  2. 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;