Dotazy na podregistr: seřadit podle, seskupit podle, distribuovat podle, Cluster Podle příkladů
Hive navíc poskytuje dotazovací jazyk typu SQL pro účely ETL Hadoop souborový systém.
Hive Query language (HiveQL) poskytuje prostředí typu SQL v Hive pro práci s tabulkami, databázemi, dotazy.
Můžeme mít k Hive přidružený jiný typ klauzulí, abychom mohli provádět různé manipulace s daty a dotazování. Pro lepší konektivitu s různými uzly mimo prostředí. HIVE poskytuje také připojení JDBC.
Hive queries poskytuje následující funkce:
- Datové modelování, jako je tvorba databází, tabulek atd.
- Funkce ETL, jako je extrakce, transformace a načítání dat do tabulek
- Připojuje ke sloučení různých datových tabulek
- Uživatelsky specifické uživatelské skripty pro usnadnění kódu
- Rychlejší dotazovací nástroj nad Hadoopem
Vytvoření tabulky v Hive
Před zahájením našeho hlavního tématu tohoto výukového programu nejprve vytvoříme tabulku, kterou použijeme jako reference pro následující výukový program.
Zde v tomto tutoriálu vytvoříme tabulku „employees_guru“ se 6 sloupci.
Z výše uvedeného snímku obrazovky
- Vytváříme tabulku „employees_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“.
- Zde v tomto kroku načítáme data do tabulky staff_guru. Data, která se chystáme načíst, budou umístěna do souboru Employees.txt
Objednávejte podle dotazu
Syntaxe ORDER BY v HiveQL je podobná syntaxi ORDER BY in SQL Jazyk.
Seřadit podle je klauzule, kterou používáme s příkazem „SELECT“. Dotazy na úl, který pomáhá třídit data. Seřadit podle klauzule použijte sloupce v tabulkách podregistru k seřazení konkrétních hodnot sloupců uvedených v Řazení podle. Pro jakýkoli název sloupce definujeme pořadí podle klauzule, dotaz vybere a zobrazí výsledky ve vzestupném nebo sestupném pořadí jednotlivých hodnot sloupců.
Pokud je uvedené pořadí podle pole řetězec, zobrazí výsledek v lexikografickém pořadí. Na zadním konci musí být předán jedinému reduktoru.
Ze snímku obrazovky výše můžeme pozorovat následující
- Je to dotaz, který provádíte na tabulce „employees_guru“ s klauzulí ORDER BY s názvem oddělení definovaným názvem sloupce ORDER BY. „Department“ je String, takže zobrazí výsledky na základě lexikografického pořadí.
- Toto je skutečný výstup pro dotaz. Pokud to pozorujeme správně, můžeme vidět, že dostává výsledky zobrazené na základě sloupce Oddělení, jako je ADMIN, Finance a tak dále v orderQuery, který má být proveden.
dotaz:
SELECT * FROM employees_guru ORDER BY Department;
Seskupit podle dotazu
Seskupit podle klauzule použijte 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 hodnot konkrétního sloupce.
Například na 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 uvidíme následující
- Je to dotaz, který se provádí na tabulku „employees_guru“ s klauzulí GROUP BY s názvem sloupce GROUP BY definovaným oddělením.
- 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 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řadit podle
Klauzule Sort by se provádí podle názvů sloupců tabulek podregistru a třídí výstup. Můžeme zmínit DESC pro řazení v sestupném pořadí a ASC pro vzestupné pořadí řazení.
Při tomto řazení seřadí řádky před podáváním do reduktoru. Vždy seřadit podle závisí na typech sloupců.
Pokud jsou například typy sloupců číselné, seřadí se v číselném pořadí, pokud jsou typy sloupců řetězcové, seřadí se v lexikografickém pořadí.
Z výše uvedeného snímku obrazovky můžeme pozorovat následující:
- Je to dotaz, který provádí na tabulce „employees_guru“ s klauzulí SORT BY s „id“, jak definuje název sloupce SORT BY. Použili jsme klíčové slovo DESC.
- Takže zobrazený výstup bude v sestupném pořadí „id“.
Dotaz:
SELECT * from employees_guru SORT BY Id DESC;
Cluster By
Cluster By se používá jako alternativa pro klauzule Distribute BY a Sort BY v Hive-QL.
Cluster Klauzule BY použitá na tabulkách přítomných v Hive. Hive používá sloupce v Cluster rozdělením řádků mezi redukce. Cluster Sloupce BY přejdou na vícenásobné redukce.
- Zajišťuje řazení hodnot přítomných ve více reduktorech
Například, Cluster Podle klauzule uvedené v názvu sloupce ID tabulky zaměstnanci_guru. Výstup při provádění tohoto dotazu poskytne výsledky více reduktorům na zadním konci. Ale jako frontend je to alternativní klauzule pro Sort By a Distribute By.
Toto je ve skutečnosti proces back-end, když provádíme dotaz s řazením podle, seskupováním podle a shlukováním podle rámce omezení mapy. Pokud tedy chceme uložit výsledky do více reduktorů, použijeme Cluster By.
Z výše uvedeného snímku obrazovky získáváme následující postřehy:
- Je to dotaz, který provádí klauzuli CLUSTER BY na hodnotě pole Id. Tady se to seřadí podle hodnot ID.
- Zobrazuje ID a jména přítomná v seřazení podle guru_employees
Dotaz:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Distribuovat podle
Klauzule Distribute BY použitá na tabulkách přítomných v Hive. Hive používá sloupce v Distribute by k rozdělení řádků mezi redukce. Všechny sloupce Distribute BY půjdou 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 pozorovat následující
- DISTRIBUTE BY Klauzule fungující na ID tabulky „empoloyees_guru“.
- Výstup zobrazující Id, Name. Na zadním konci to půjde do stejného reduktoru
Dotaz:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;