Dotazy na podregistr: Seřadit podle, Seskupit podle, Distribuovat podle, Klastr podle příkladů

Obsah:

Anonim

Hive poskytuje dotazovací jazyk typu SQL pro účely ETL nad systémem souborů Hadoop.

Jazyk Hive Query (HiveQL) poskytuje prostředí typu SQL v Hive pro práci s tabulkami, databázemi a dotazy.

Můžeme mít jiný typ klauzulí spojených s Hive, abychom mohli provádět různé manipulace s daty různých typů a dotazování. Pro lepší připojení s různými uzly mimo prostředí. HIVE také poskytuje připojení JDBC.

Hive queries poskytuje následující funkce:

  • Datové modelování, jako je vytváření databází, tabulek atd.
  • Funkce ETL, jako je extrakce, transformace a načítání dat do tabulek
  • Připojí se ke sloučení různých datových tabulek
  • Uživatelsky specifické vlastní skripty pro usnadnění kódu
  • Rychlejší dotazovací nástroj nad Hadoop

V tomto článku se naučíte-

  • Seřadit podle dotazu
  • Seskupit podle dotazu
  • Seřazeno podle
  • Seskupit podle
  • Distribuovat podle

Vytváření tabulky v podregistru

Před zahájením s naším hlavním tématem pro tento kurz nejprve vytvoříme tabulku, abychom ji mohli použít jako odkazy pro následující kurz.

Tady v tomto výukovém programu vytvoříme tabulku "staff_guru" se 6 sloupci.

Z výše uvedeného snímku obrazovky

  1. Vytváříme tabulku „zaměstnanci_guru“ se 6 hodnotami sloupců, jako je ID, jméno, věk, adresa, plat, oddělení, která patří zaměstnancům přítomným v organizaci „guru“.
  2. Tady v tomto kroku načítáme data do tabulky employee_guru. Data, která se chystáme načíst, budou umístěna do souboru Employees.txt

Seřadit podle dotazu:

Syntaxe ORDER BY v HiveQL je podobná syntaxi ORDER BY v jazyce SQL.

Řadit podle je klauzule, kterou používáme s příkazem „SELECT“ v dotazech na Úly, což pomáhá seřadit data. Řazení podle klauzule použijte sloupce v tabulkách podregistru pro třídění konkrétních hodnot sloupců uvedených v Řazení podle. Pro jakýkoli název sloupce definujeme pořadí klauzulí, dotaz vybere a zobrazí výsledky vzestupně nebo sestupně podle konkrétních hodnot sloupců.

Pokud je uvedené pořadí podle polí řetězec, zobrazí výsledek v lexikografickém pořadí. Na zadní straně musí být předán jednomu reduktoru.

Z výše uvedeného obrazovky můžeme sledovat následující

  1. Jedná se o dotaz, který provádí na tabulce „zaměstnanci_guru“ s klauzulí ORDER BY s definovaným oddělením ORDER BY.

    „Oddělení“ je řetězec, takže bude zobrazovat výsledky na základě lexikografického pořadí.

  2. Toto je skutečný výstup pro dotaz. Pokud to pozorujeme správně, vidíme, že získává výsledky zobrazené na základě sloupce Oddělení, jako je ADMIN, Finance atd., Aby bylo možné provést orderQuery.

Dotaz:

SELECT * FROM employees_guru ORDER BY Department;

Seskupit podle dotazu:

Klauzule seskupit podle použít sloupce v tabulkách podregistru pro seskupení konkrétních hodnot sloupců uvedených u skupiny podle. Pro jakýkoli název sloupce definujeme klauzuli "groupby", dotaz vybere a zobrazí výsledky seskupením konkrétních hodnot sloupce.

Například v níže uvedeném snímku obrazovky se zobrazí celkový počet zaměstnanců přítomných v každém oddělení. Zde máme „Oddělení“ jako skupinu podle hodnoty.

Z výše uvedeného snímku obrazovky budeme sledovat následující

  1. Jedná se o dotaz, který se provádí v tabulce „zaměstnanci_guru“ s klauzulí GROUP BY s definovaným názvem sloupce GROUP BY.
  2. Zde zobrazený výstup je název oddělení a zaměstnanci se počítají v různých odděleních. Zde jsou všichni zaměstnanci patřící do konkrétního oddělení seskupeni a zobrazeni ve výsledcích. Výsledkem je tedy název oddělení s celkovým počtem zaměstnanců přítomných v každém oddělení.

Dotaz:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Seřazeno podle:

Klauzule Seřadit podle provádí u názvů sloupců tabulek Hive, aby seřadil výstup. Můžeme zmínit DESC pro řazení pořadí v sestupném pořadí a zmínit ASC pro vzestupné pořadí řazení.

V tomto řazení podle toho seřadí řádky před podáním do reduktoru. Vždy seřadit podle závisí na typu sloupce.

Například pokud jsou typy sloupců číselné, budou se řadit v číselném pořadí, pokud jsou typy sloupců řetězcové, budou se řadit v lexikografickém pořadí.

Z výše uvedeného snímku obrazovky můžeme sledovat následující:

  1. Jedná se o dotaz, který provádí v tabulce „zaměstnanci_guru“ s klauzulí SORT BY s „id“, jak definuje název sloupce SORT BY. Použili jsme klíčové slovo DESC.
  2. Zobrazený výstup bude tedy sestupně podle „id“.

Dotaz:

SELECT * from employees_guru SORT BY Id DESC;

Seskupit podle:

Cluster By použit jako alternativa pro klauzule Distribute BY a Sort BY v Hive-QL.

Klauzule Cluster BY použitá na tabulkách přítomných v Hive. Hive používá sloupce v Clusteru k distribuci řádků mezi reduktory. Sloupce Cluster BY přejdou k několika reduktorům.

  • Zajišťuje pořadí řazení hodnot přítomných ve více reduktorech

Například klauzule Cluster By uvedená v názvu sloupce Id tabulky tabulky zaměstnanců_guru. Výstup při provádění tohoto dotazu poskytne výsledky více reduktorům na zadním konci. Ale jako front-end jde o alternativní klauzuli pro Sort By i Distribute By.

Jedná se vlastně o back-end proces, když provádíme dotaz s tříděním podle, seskupováním podle a seskupováním podle podmínek Map redukovat rámec. Pokud tedy chceme výsledky ukládat do více reduktorů, použijeme Cluster By.

Z výše uvedeného snímku obrazovky získáváme následující pozorování:

  1. Je to dotaz, který provádí klauzuli CLUSTER BY na hodnotě pole Id. Tady získá třídění podle hodnot Id.
  2. Zobrazuje ID a jména přítomná v guru_employees seřazeném podle

Dotaz:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Distribuovat podle:

Distribuovat klauzuli BY použitou na tabulkách přítomných v Hive. Hive používá sloupce v Distribute by k distribuci řádků mezi reduktory. Všechny sloupce Distribute BY přejdou do stejné redukce.

  • Zajišťuje, že každý z N reduktorů získá nepřekrývající se rozsahy sloupce
  • Netřídí výstup každého reduktoru

Z výše uvedeného snímku obrazovky můžeme sledovat následující

  1. DISTRIBUCE PODLE klauzule provádějící na Id tabulky „empoloyees_guru“
  2. Výstup zobrazující ID, jméno. Na zadní straně přejde na stejný reduktor

Dotaz:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;