Hive-partities en buckets met voorbeeld
Tabellen, partities en buckets zijn de onderdelen van Hive-gegevensmodellering.
Wat zijn partities?
Hive Partitions is een manier om tabellen in partities te ordenen door tabellen in verschillende delen te verdelen op basis van partitiesleutels.
Partitie is handig als de tabel een of meer partitiesleutels heeft. Partitiesleutels zijn basiselementen om te bepalen hoe de gegevens in de tabel worden opgeslagen.
Bijvoorbeeld: -
“Klant met wat e-commercegegevens die behoren tot Indiase activiteiten waarin elke staat (38 staten) als geheel wordt genoemd. Als we de staatskolom als partitiesleutel nemen en partities uitvoeren op die Indiase gegevens als geheel, kunnen we het aantal partities (38 partities) krijgen dat gelijk is aan het aantal staten (38) dat aanwezig is in India. Zodat elke staatsgegevens afzonderlijk kunnen worden bekeken in partitietabellen.
Voorbeeldcodefragment voor partities
- Creëren van een tabel met alle staten
create table all states(state string, District string,Enrolments string) row format delimited fields terminated by ',';
- Gegevens laden in de gemaakte tabel met alle statussen
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Aanmaken van partitietabel
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
- Voor partitie moeten we deze eigenschap instellen
set hive.exec.dynamic.partition.mode=nonstrict
- Gegevens laden in partitietabel
INSERT OVERWRITE TABLE state_part PARTITION(state) SELECT district,enrolments,state from allstates;
- Feitelijke verwerking en vorming van partitietabellen op basis van de status als partitiesleutel
- Er zullen 38 partitie-uitvoer zijn in HDFS-opslag met de bestandsnaam als statusnaam. We zullen dit in deze stap controleren
De volgende schermafbeeldingen laten u de uitvoering van de hierboven genoemde code zien
Vanuit de bovenstaande code doen we het volgende
- Creëren van een tabel met alle staten met 3 kolomnamen, zoals staat, district en inschrijving
- Gegevens laden in tabel alle staten
- Creëren van partitietabel met status als partitiesleutel
- In deze stap stelt u de partitiemodus in als niet-strikt (deze modus activeert de dynamische partitiemodus)
- Gegevens laden in partitie tablestate_part
- Feitelijke verwerking en vorming van partitietabellen op basis van de status als partitiesleutel
- Er zijn 38 partitie-uitvoer in HDFS-opslag met de bestandsnaam als statusnaam. We zullen dit in deze stap controleren. In deze stap zien we de 38 partitie-uitvoer in HDFS
Wat zijn emmers?
Buckets in Hive worden gebruikt bij het scheiden van Hive-tabelgegevens in meerdere bestanden of mappen. het wordt gebruikt voor efficiënt bevragen.
- De gegevens die in die partities aanwezig zijn, kunnen verder worden onderverdeeld in buckets
- De verdeling wordt uitgevoerd op basis van de hash van bepaalde kolommen die we in de tabel hebben geselecteerd.
- Buckets gebruiken een of andere vorm van hashing-algoritme aan de achterkant om elk record te lezen en in buckets te plaatsen
- In Hive moeten we buckets inschakelen met behulp van de set.hive.enforce.bucketing=waar;
Stap 1) Maak een bucket zoals hieronder weergegeven.
Uit de bovenstaande schermafdruk
- We maken voorbeeld_bucket met kolomnamen zoals voornaam, functie_id, afdeling, salaris en land
- We maken hier 4 emmers.
- Zodra de gegevens automatisch zijn geladen, plaatst u de gegevens in 4 buckets
Stap 2) Gegevens laden in tabelvoorbeeldbucket
Ervan uitgaande dat de "Employees table" al in het Hive-systeem is aangemaakt. In deze stap zien we het laden van gegevens uit de werknemerstabel in de tabelvoorbeeldbucket.
Voordat we werknemersgegevens naar buckets gaan verplaatsen, moet u ervoor zorgen dat deze bestaan uit kolomnamen zoals voornaam, functie-id, afdeling, salaris en land.
Hier laden we gegevens in de monsterbucket vanuit de werknemerstabel.
Stap 3)Er worden 4 buckets weergegeven die in stap 1 zijn gemaakt
Uit de bovenstaande schermafbeelding kunnen we zien dat de gegevens uit de werknemerstabel worden overgebracht naar 4 buckets die in stap 1 zijn gemaakt.