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
- 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“.
- 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í
- 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í.
- 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í
- 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.
- 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í:
- 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.
- 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í:
- Je to dotaz, který provádí klauzuli CLUSTER BY na hodnotě pole Id. Tady získá třídění podle hodnot Id.
- 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í
- DISTRIBUCE PODLE klauzule provádějící na Id tabulky „empoloyees_guru“
- 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;