Přepážky úlů a lopaty s příkladem
Tabulky, oddíly a segmenty jsou součástí datového modelování Hive.
Co je to oddíly?
Hive Partitions je způsob, jak organizovat tabulky do oddílů rozdělením tabulek do různých částí na základě klíčů oddílů.
Oddíl je užitečný, když tabulka obsahuje jeden nebo více klíčů oddílu. Klíče oddílů jsou základními prvky pro určení způsobu uložení dat v tabulce.
Pro příklad: -
„Klient má některá data elektronického obchodu, která patří k operacím v Indii, ve kterých jsou operace každého státu (38 států) uvedeny jako celek. Pokud vezmeme sloupec stavu jako klíč oddílu a provedeme oddíly na těchto datech Indie jako celku, můžeme získat Počet oddílů (38 oddílů), který se rovná počtu států (38) přítomných v Indii. Taková, že data každého stavu lze prohlížet samostatně v tabulkách oddílů.
Ukázkový úryvek kódu pro oddíly
- Vytvoření tabulky všech stavů
create table all states(state string, District string,Enrolments string) row format delimited fields terminated by ',';
- Načítání dat do vytvořené tabulky všech stavů
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Vytvoření tabulky oddílů
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
- Pro oddíl musíme tuto vlastnost nastavit
set hive.exec.dynamic.partition.mode=nonstrict
- Načítání dat do tabulky oddílů
INSERT OVERWRITE TABLE state_part PARTITION(state) SELECT district,enrolments,state from allstates;
- Aktuální zpracování a tvorba tabulek oddílů na základě stavu jako klíč oddílu
- V úložišti HDFS bude 38 výstupů oddílů s názvem souboru jako názvem stavu. V tomto kroku to zkontrolujeme
Následující snímky obrazovky ukáží provedení výše uvedeného kódu
Z výše uvedeného kódu děláme následující věci
- Vytvoření tabulky všech států se 3 názvy sloupců, jako je stát, okres a zápis
- Načítání dat do tabulky všech stavů
- Vytvoření tabulky oddílů se stavem jako klíč oddílu
- V tomto kroku Nastavení režimu oddílu jako nepřísného (Tento režim aktivuje režim dynamického oddílu)
- Načítání dat do oddílu tablestate_part
- Aktuální zpracování a tvorba tabulek oddílů na základě stavu jako klíč oddílu
- V úložišti HDFS bude 38 výstupů oddílů s názvem souboru jako názvem stavu. V tomto kroku to zkontrolujeme. V tomto kroku vidíme 38 výstupů oddílů v HDFS
Co je Buckets?
Segmenty v úlu se používají při segregaci dat úlových tabulek do více souborů nebo adresářů. používá se pro efektivní dotazování.
- Data, tj. přítomná v těchto oddílech, lze dále rozdělit do segmentů
- Rozdělení se provádí na základě hash jednotlivých sloupců, které jsme vybrali v tabulce.
- Segmenty používají nějakou formu hashovacího algoritmu na zadním konci ke čtení každého záznamu a jeho umístění do segmentů
- V Hive musíme povolit buckety pomocí set.hive.enforce.bucketing=true;
Krok 1) Vytvoření bucketu, jak je znázorněno níže.
Z výše uvedeného snímku obrazovky
- Vytváříme sample_bucket s názvy sloupců, jako je first_name, job_id, department, plat a country
- Vytváříme zde 4 kbelíky.
- Jakmile se data načtou automaticky, umístěte data do 4 kbelíků
Krok 2) Načítání dat do nádoby na vzorky tabulky
Za předpokladu, že „Tabulka zaměstnanců“ již byla vytvořena v systému Hive. V tomto kroku uvidíme načítání dat z tabulky zaměstnanců do bucketu vzorku tabulky.
Než začneme přesouvat data zaměstnanců do segmentů, ujistěte se, že se skládají z názvů sloupců, jako je křestní_jméno, job_id, oddělení, plat a země.
Zde načítáme data do ukázkového bucketu z tabulky zaměstnanců.
Krok 3)Zobrazují se 4 segmenty vytvořené v kroku 1
Z výše uvedeného snímku obrazovky můžeme vidět, že data z tabulky zaměstnanců se přenesou do 4 bucketů vytvořených v kroku 1.