Partiții și găleți Hive cu exemplu
Tabelele, partițiile și compartimentele sunt părți ale modelării datelor Hive.
Ce este Partitions?
Hive Partitions este o modalitate de a organiza tabelele în partiții prin împărțirea tabelelor în diferite părți pe baza cheilor de partiție.
Partiția este utilă atunci când tabelul are una sau mai multe chei de partiție. Cheile de partiție sunt elemente de bază pentru a determina modul în care datele sunt stocate în tabel.
De exemplu: -
„Client care are unele date de comerț electronic care aparțin operațiunilor din India în care fiecare stat (38 de state) este menționat în ansamblu. Dacă luăm coloana de stat ca cheie de partiție și efectuăm partiții pe acele date din India ca un întreg, putem obține Numărul de partiții (38 de partiții) care este egal cu numărul de state (38) prezente în India. Astfel încât datele fiecărei stări pot fi vizualizate separat în tabelele de partiții.
Exemplu de fragment de cod pentru partiții
- Crearea tabelului toate stările
create table all states(state string, District string,Enrolments string) row format delimited fields terminated by ',';
- Încărcarea datelor în tabelul creat toate stările
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Crearea tabelului de partiții
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
- Pentru partiție trebuie să setăm această proprietate
set hive.exec.dynamic.partition.mode=nonstrict
- Încărcarea datelor în tabelul de partiții
INSERT OVERWRITE TABLE state_part PARTITION(state) SELECT district,enrolments,state from allstates;
- Procesarea efectivă și formarea tabelelor de partiții pe baza stării ca cheie de partiție
- Vor fi 38 de ieșiri de partiție în stocarea HDFS cu numele fișierului ca nume de stat. Vom verifica acest lucru în acest pas
Următoarele capturi de ecran vă vor arăta execuția codului menționat mai sus
Din codul de mai sus, facem următoarele lucruri
- Crearea unui tabel pentru toate statele cu nume de 3 coloane, cum ar fi stat, district și înscriere
- Încărcarea datelor în tabelul tuturor stărilor
- Crearea tabelului de partiții cu stare ca cheie de partiție
- În acest pas, setarea modului de partiție ca nestrict (Acest mod va activa modul de partiție dinamică)
- Se încarcă datele în partiția tablestate_part
- Procesarea efectivă și formarea tabelelor de partiții pe baza stării ca cheie de partiție
- Există 38 de ieșiri de partiție în stocarea HDFS cu numele fișierului ca nume de stat. Vom verifica acest lucru în acest pas. În acest pas, vedem cele 38 de ieșiri ale partiției în HDFS
Ce este Buckets?
Buckets in hive este folosit pentru separarea datelor din tabelul hive în mai multe fișiere sau directoare. este folosit pentru interogare eficientă.
- Datele, adică prezente în acele partiții, pot fi împărțite în continuare în Buckets
- Împărțirea se realizează pe baza Hash-ului anumitor coloane pe care le-am selectat în tabel.
- Bucket-urile folosesc o anumită formă de algoritm Hashing la capătul din spate pentru a citi fiecare înregistrare și a o plasa în găleți
- În Hive, trebuie să activăm găleți utilizând set.hive.enforce.bucketing=true;
Pas 1) Crearea găleții așa cum se arată mai jos.
Din captura de ecran de mai sus
- Creăm sample_bucket cu nume de coloane precum first_name, job_id, departament, salariu și țară
- Creăm 4 găleți aici.
- Odată ce datele sunt încărcate automat, plasați datele în 4 găleți
Pas 2) Încărcarea datelor în compartimentul de mostre de tabel
Presupunând că „Tabelul angajaților” deja creat în sistemul Hive. În acest pas, vom vedea încărcarea tabelului de date de la angajați în tabelul de mostre.
Înainte de a începe să mutăm datele angajaților în compartimente, asigurați-vă că acestea constau în nume de coloane, cum ar fi first_name, job_id, departament, salariu și țară.
Aici încărcăm datele într-un grup de mostre din tabelul angajaților.
Pas 3)Se afișează 4 găleți create la Pasul 1
Din captura de ecran de mai sus, putem vedea că datele din tabelul angajaților sunt transferate în 4 găleți create la pasul 1.