Hive-partitioner och hinkar med exempel
Tabeller, partitioner och hinkar är delarna av Hive-datamodellering.
Vad är partitioner?
Hive-partitioner är ett sätt att organisera tabeller i partitioner genom att dela upp tabeller i olika delar baserat på partitionsnycklar.
Partition är användbart när tabellen har en eller flera partitionsnycklar. Partitionsnycklar är grundläggande element för att bestämma hur data lagras i tabellen.
Till exempel: -
"Kunden som har en del e-handelsdata som hör till Indiens verksamhet där varje delstat (38 delstater) verksamhet nämns som en helhet. Om vi tar tillståndskolumnen som partitionsnyckel och utför partitioner på den Indien-datan som helhet, kan vi få antalet partitioner (38 partitioner) vilket är lika med antalet stater (38) som finns i Indien. Så att varje tillståndsdata kan ses separat i partitionstabeller.
Exempel på kodavsnitt för partitioner
- Skapande av tabell alla stater
create table all states(state string, District string,Enrolments string) row format delimited fields terminated by ',';
- Laddar data i skapad tabell alla tillstånd
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Skapande av partitionstabell
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
- För partition måste vi ställa in den här egenskapen
set hive.exec.dynamic.partition.mode=nonstrict
- Laddar data till partitionstabellen
INSERT OVERWRITE TABLE state_part PARTITION(state) SELECT district,enrolments,state from allstates;
- Faktisk bearbetning och bildning av partitionstabeller baserat på status som partitionsnyckel
- Det kommer att finnas 38 partitionsutgångar i HDFS-lagring med filnamnet som tillståndsnamn. Vi kommer att kontrollera detta i detta steg
Följande skärmbilder kommer att visa exekveringen av ovan nämnda kod
Från ovanstående kod gör vi följande saker
- Skapa en tabell för alla stater med 3 kolumnnamn som stat, distrikt och registrering
- Laddar data i tabellen alla tillstånd
- Skapande av partitionstabell med tillstånd som partitionsnyckel
- I det här steget ställer du in partitionsläget som icke-strikt (Detta läge aktiverar dynamiskt partitionsläge)
- Laddar data till partition tablestate_part
- Faktisk bearbetning och bildning av partitionstabeller baserat på status som partitionsnyckel
- Det kommer till 38 partitionsutgångar i HDFS-lagring med filnamnet som tillståndsnamn. Vi kommer att kontrollera detta i detta steg. I det här steget ser vi de 38 partitionsutgångarna i HDFS
Vad är Buckets?
Buckets in hive används för att segregera av hive-tabelldata i flera filer eller kataloger. den används för effektiv sökning.
- Data dvs. som finns i de partitionerna kan delas upp ytterligare i Buckets
- Uppdelningen utförs baserat på Hash för särskilda kolumner som vi valt i tabellen.
- Buckets använder någon form av hashing-algoritm på baksidan för att läsa varje post och placera den i hinkar
- I Hive måste vi aktivera hinkar genom att använda set.hive.enforce.bucketing=true;
Steg 1) Skapa hink som visas nedan.
Från ovanstående skärmdump
- Vi skapar sample_bucket med kolumnnamn som förnamn, jobb-id, avdelning, lön och land
- Vi skapar 4 hinkar här.
- När data har laddats automatiskt, placera data i 4 hinkar
Steg 2) Laddar data till tabellexempelhinken
Förutsatt att "Employees table" redan skapats i Hive-systemet. I det här steget kommer vi att se inläsningen av data från anställdas tabell till tabellexempelhinken.
Innan vi börjar flytta anställdas data till hinkar, se till att den består av kolumnnamn som förnamn, jobb-id, avdelning, lön och land.
Här laddar vi in data i provhinken från personaltabellen.
Steg 3)Visar 4 hinkar som skapades i steg 1
Från ovanstående skärmdump kan vi se att data från personaltabellen överförs till 4 hinkar skapade i steg 1.