Hive skillevægge og spande med eksempel
Tabeller, partitioner og Buckets er dele af Hive-datamodellering.
Hvad er partitioner?
Hive Partitions er en måde at organisere tabeller i partitioner ved at opdele tabeller i forskellige dele baseret på partitionsnøgler.
Partition er nyttigt, når tabellen har en eller flere partitionsnøgler. Partitionsnøgler er grundlæggende elementer til at bestemme, hvordan dataene lagres i tabellen.
For eksempel-
"Kunde, der har nogle e-handelsdata, som tilhører Indiens operationer, hvor hver stat (38 stater) opererer som en helhed. Hvis vi tager tilstandskolonnen som partitionsnøgle og udfører partitioner på disse Indien-data som helhed, kan vi få Antal partitioner (38 partitioner), som er lig med antallet af stater (38) til stede i Indien. Sådan at hver tilstandsdata kan ses separat i partitionstabeller.
Eksempelkodestykke til partitioner
- Oprettelse af tabel alle stater
create table all states(state string, District string,Enrolments string) row format delimited fields terminated by ',';
- Indlæser data i oprettet tabel alle tilstande
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Oprettelse af partitionstabel
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
- Til partition skal vi indstille denne egenskab
set hive.exec.dynamic.partition.mode=nonstrict
- Indlæser data i partitionstabel
INSERT OVERWRITE TABLE state_part PARTITION(state) SELECT district,enrolments,state from allstates;
- Faktisk behandling og dannelse af partitionstabeller baseret på tilstand som partitionsnøgle
- Der vil være 38 partitionsudgange i HDFS-lageret med filnavnet som tilstandsnavn. Vi tjekker dette i dette trin
Følgende skærmbilleder vil vise dig udførelsen af ovennævnte kode
Fra ovenstående kode gør vi følgende ting
- Oprettelse af tabel alle stater med 3 kolonnenavne såsom stat, distrikt og tilmelding
- Indlæser data i tabel alle tilstande
- Oprettelse af partitionstabel med tilstand som partitionsnøgle
- I dette trin Indstilling af partitionstilstand som ikke-streng (Denne tilstand vil aktivere dynamisk partitionstilstand)
- Indlæser data i partition tablestate_part
- Faktisk behandling og dannelse af partitionstabeller baseret på tilstand som partitionsnøgle
- Der er 38 partitionsudgange i HDFS-lageret med filnavnet som tilstandsnavn. Vi tjekker dette i dette trin. I dette trin ser vi de 38 partitionsudgange i HDFS
Hvad er Buckets?
Buckets in hive bruges til at adskille hive-tabeldata i flere filer eller mapper. det bruges til effektiv forespørgsel.
- Dataene, dvs. tilstede i, at partitioner kan opdeles yderligere i Buckets
- Opdelingen udføres baseret på Hash af bestemte kolonner, som vi valgte i tabellen.
- Buckets bruger en form for hashing-algoritme i bagenden til at læse hver post og placere den i buckets
- I Hive skal vi aktivere buckets ved at bruge set.hive.enforce.bucketing=sand;
Trin 1) Oprettelse af spand som vist nedenfor.
Fra ovenstående skærmbillede
- Vi opretter sample_bucket med kolonnenavne såsom fornavn, job_id, afdeling, løn og land
- Vi laver 4 spande herovre.
- Når dataene er indlæst automatisk, skal du placere dataene i 4 spande
Trin 2) Indlæser data i tabelprøvespand
Forudsat at "Medarbejdertabel" allerede er oprettet i Hive-systemet. I dette trin vil vi se indlæsningen af data fra medarbejdertabellen i tabelprøvespanden.
Før vi begynder at flytte medarbejderdata til buckets, skal du sørge for, at de består af kolonnenavne som fornavn, job-id, afdeling, løn og land.
Her indlæser vi data i prøvespand fra medarbejdertabellen.
Trin 3)Viser 4 spande, der blev oprettet i trin 1
Fra ovenstående skærmbillede kan vi se, at data fra medarbejdertabellen overføres til 4 buckets oprettet i trin 1.