Hive - Partizionamento

Hive organizza le tabelle in partizioni. È un modo per dividere una tabella in parti correlate in base ai valori delle colonne partizionate come data, città e dipartimento. Utilizzando la partizione, è facile interrogare una parte dei dati.

Le tabelle o le partizioni sono suddivise in buckets,per fornire una struttura extra ai dati che possono essere utilizzati per query più efficienti. Il bucket funziona in base al valore della funzione hash di alcune colonne di una tabella.

Ad esempio, una tabella denominata Tab1contiene i dati dei dipendenti come ID, nome, reparto e yoj (ad esempio, anno di adesione). Si supponga di dover recuperare i dettagli di tutti i dipendenti che hanno aderito nel 2012. Una query ricerca le informazioni richieste nell'intera tabella. Tuttavia, se si partizionano i dati dei dipendenti con l'anno e li si archivia in un file separato, si riduce il tempo di elaborazione delle query. L'esempio seguente mostra come partizionare un file e i suoi dati:

Il file seguente contiene la tabella dei dati di impiego.

/ tab1 / Employeedata / file1

id, name, dept, yoj
1, gopal, TP, 2012
2, kiran, HR, 2012
3, kaleel,SC, 2013
4, Prasanth, SC, 2013

I dati di cui sopra sono partizionati in due file utilizzando l'anno.

/ tab1 / Employeedata / 2012 / file2

1, gopal, TP, 2012
2, kiran, HR, 2012

/ tab1 / Employeedata / 2013 / file3

3, kaleel,SC, 2013
4, Prasanth, SC, 2013

Aggiunta di una partizione

Possiamo aggiungere partizioni a una tabella alterando la tabella. Supponiamo di avere una tabella chiamataemployee con campi come ID, Nome, Stipendio, Designazione, Reparto e yoj.

Sintassi:

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...;

partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)

La seguente query viene utilizzata per aggiungere una partizione alla tabella dei dipendenti.

hive> ALTER TABLE employee
> ADD PARTITION (year=’2012’)
> location '/2012/part2012';

Ridenominazione di una partizione

La sintassi di questo comando è la seguente.

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

La seguente query viene utilizzata per rinominare una partizione:

hive> ALTER TABLE employee PARTITION (year=’1203’)
   > RENAME TO PARTITION (Yoj=’1203’);

Eliminazione di una partizione

La seguente sintassi viene utilizzata per eliminare una partizione:

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...;

La seguente query viene utilizzata per eliminare una partizione:

hive> ALTER TABLE employee DROP [IF EXISTS]
   > PARTITION (year=’1203’);