Tabellen, partities en buckets zijn de onderdelen van Hive-gegevensmodellering.
Wat zijn partities?
Hive-partities 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 heeft enkele e-commercegegevens die behoren tot India-operaties waarin elke staat (38 staten) operaties als geheel worden genoemd. Als we de staatskolom als partitiesleutel nemen en partities uitvoeren op die Indiase gegevens als geheel, kunnen we om het aantal partities (38 partities) te krijgen dat gelijk is aan het aantal staten (38) dat aanwezig is in India, zodat elke statusgegevens afzonderlijk in partitietabellen kunnen worden bekeken.
Voorbeeldcodefragment voor partities
- Creëren van tabel alle staten
create table all states(state string, District string,Enrolments string)row format delimitedfields terminated by ',';
- Het laden van gegevens in de gemaakte tabel alle staten
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Aanmaken van een 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;
- Werkelijke verwerking en vorming van partitietabellen op basis van de status als partitiesleutel
- Er zullen 38 partitie-uitgangen zijn in HDFS-opslag met de bestandsnaam als staatnaam. We zullen dit in deze stap controleren
De volgende schermafbeeldingen tonen u de uitvoering van bovengenoemde code
Uit de bovenstaande code doen we de volgende dingen
- Aanmaken van tabel alle staten met 3 kolomnamen zoals staat, district en inschrijving
- Gegevens laden in tabel alle staten
- Aanmaken van partitietabel met status als partitiesleutel
- In deze stap Partitiemodus instellen als niet-strikt (deze modus activeert de dynamische partitiemodus)
- Gegevens laden in partitie tablestate_part
- Werkelijke verwerking en vorming van partitietabellen op basis van de status als partitiesleutel
- Er gaan 38 partitie-uitgangen in HDFS-opslag met de bestandsnaam als staatnaam. We zullen dit in deze stap controleren. In deze stap zien we de 38 partitie-uitgangen 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 zoeken.
- De gegevens die in die partities aanwezig zijn, kunnen verder worden onderverdeeld in buckets
- De deling wordt uitgevoerd op basis van de hash van bepaalde kolommen die we in de tabel hebben geselecteerd.
- Emmers gebruiken een of andere vorm van hash-algoritme aan de achterkant om elk record te lezen en in emmers te plaatsen
- In Hive moeten we buckets inschakelen met behulp van de set.hive.enforce.bucketing = true;
Stap 1) Bucket maken zoals hieronder weergegeven.
Van de bovenstaande schermafbeelding
- We maken sample_bucket met kolomnamen zoals voornaam, job_id, afdeling, salaris en land
- We maken hier 4 emmers.
- Zodra de gegevens automatisch zijn geladen, plaatst u de gegevens in 4 emmers
Stap 2) Gegevens laden in de voorbeeldemmer van de tabel
Ervan uitgaande dat de "Werknemerstabel" al is gemaakt in het Hive-systeem. In deze stap zullen we zien hoe de gegevens van de werknemerstabel worden geladen in de voorbeeldemmer van de tabel.
Voordat we beginnen met het verplaatsen van werknemersgegevens naar buckets, moet u ervoor zorgen dat deze bestaan uit kolomnamen zoals voornaam, job_id, afdeling, salaris en land.
Hier laden we gegevens in de voorbeeldemmer uit de tabel met medewerkers.
Stap 3) 4 emmers weergeven 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.