Partizioni Hive & Benne con esempio

Sommario:

Anonim

Tabelle, partizioni e bucket sono le parti della modellazione dati di Hive.

Cosa sono le partizioni?

Hive Partitions è un modo per organizzare le tabelle in partizioni dividendo le tabelle in parti diverse in base alle chiavi di partizione.

La partizione è utile quando la tabella ha una o più chiavi di partizione. Le chiavi di partizione sono elementi di base per determinare la modalità di archiviazione dei dati nella tabella.

Ad esempio : -

"Cliente che dispone di alcuni dati di e-commerce che appartengono alle operazioni dell'India in cui ogni stato (38 stati) è menzionato nel suo insieme. Se prendiamo la colonna dello stato come chiave di partizione ed eseguiamo partizioni su quei dati dell'India nel loro insieme, possiamo per ottenere il numero di partizioni (38 partizioni) che è uguale al numero di stati (38) presenti in India, in modo tale che i dati di ogni stato possano essere visualizzati separatamente nelle tabelle delle partizioni.

Esempio di frammento di codice per le partizioni

  1. Creazione della tabella tutti gli stati
create table all states(state string, District string,Enrolments string)row format delimitedfields terminated by ',';
  1. Caricamento dei dati nella tabella creata tutti gli stati
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
  1. Creazione della tabella delle partizioni
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
  1. Per la partizione dobbiamo impostare questa proprietà

    set hive.exec.dynamic.partition.mode=nonstrict
  2. Caricamento dei dati nella tabella delle partizioni
INSERT OVERWRITE TABLE state_part PARTITION(state)SELECT district,enrolments,state from allstates;
  1. Elaborazione effettiva e formazione di tabelle di partizione in base allo stato come chiave di partizione
  2. Ci saranno 38 output di partizioni nell'archivio HDFS con il nome del file come nome dello stato. Lo controlleremo in questo passaggio

Le seguenti schermate ti mostreranno l'esecuzione del codice sopra menzionato

Dal codice sopra, facciamo le seguenti cose

  1. Creazione della tabella di tutti gli stati con 3 nomi di colonna come stato, distretto e iscrizione
  2. Caricamento dei dati nella tabella di tutti gli stati
  3. Creazione della tabella delle partizioni con stato come chiave di partizione
  4. In questo passaggio Impostazione della modalità di partizione come non rigorosa (Questa modalità attiverà la modalità di partizione dinamica)
  5. Caricamento dei dati nella partizione tablestate_part
  6. Elaborazione effettiva e formazione di tabelle di partizione in base allo stato come chiave di partizione
  7. Ci saranno 38 output di partizioni nell'archivio HDFS con il nome del file come nome dello stato. Lo controlleremo in questo passaggio. In questo passaggio, vediamo i 38 output delle partizioni in HDFS

Cos'è Buckets?

I bucket in hive vengono utilizzati per separare i dati della tabella hive in più file o directory. viene utilizzato per query efficienti.

  • I dati cioè presenti in quelle partizioni possono essere ulteriormente suddivisi in Bucket
  • La divisione viene eseguita in base all'Hash di particolari colonne che abbiamo selezionato nella tabella.
  • I bucket utilizzano una qualche forma di algoritmo di hash nel back-end per leggere ogni record e posizionarlo nei bucket
  • In Hive, dobbiamo abilitare i bucket utilizzando set.hive.enforce.bucketing = true;

Passaggio 1) Creazione del bucket come mostrato di seguito.

Dalla schermata sopra

  • Stiamo creando sample_bucket con nomi di colonne come first_name, job_id, department, stary e country
  • Stiamo creando 4 secchi sopra.
  • Una volta che i dati vengono caricati automaticamente, posizionali in 4 bucket

Passaggio 2) Caricamento dei dati nel bucket di esempio della tabella

Supponendo che la "tabella Employees" sia già stata creata nel sistema Hive. In questo passaggio, vedremo il caricamento dei dati dalla tabella dei dipendenti nel bucket di esempio della tabella.

Prima di iniziare a spostare i dati dei dipendenti nei bucket, assicurati che siano costituiti da nomi di colonne come first_name, job_id, department, stary e country.

Qui stiamo caricando i dati nel bucket di esempio dalla tabella dei dipendenti.

Passaggio 3) Visualizzazione di 4 bucket creati nel passaggio 1

Dallo screenshot sopra, possiamo vedere che i dati dalla tabella dei dipendenti vengono trasferiti in 4 bucket creati nel passaggio 1.