Hive - Partitionierung



Hive Organisiert tabellen in partitionen. Es ist ein Weg der trennend einer Tabelle in Bezogene Teile basierend auf den Werten der partitioniert Spalten , wie Datum, Stadt, und Abteilung. MitHilfe Partition, ist es leicht, abgefragt einen Teil der Daten .

Tabellen oder Partitionen sind in unterteilt Eimer, , um liefern extra Struktur, um die Daten, die für eine effizientere Abfrage verwendet werden kann. Bucketing Werke basierend auf der Wertes der Hash-Funktion von einige Spalte einer Tabelle.

Zum Beispiel wird eine Tabelle genannt Tab1 enthält Mitarbeiterdaten wie ID, Name, Abteilung und yoj (dh Jahres nach Beitritt). Angenommen, Sie möchten abrufen die Details aller Mitarbeiter, die im Jahr 2012 trat .eine Abfrage durchsucht die ganze Tabelle für die benötigt Informationen . Allerdings, wenn Sie die Mitarbeiterdaten mit dem Jahr partitionieren und speichern sie in einer separaten Datei, es reduziert die Abfrage Verarbeitungszeit. Das folgende Beispiel zeigt, wie Sie eine Datei und seine Daten partitionieren:

Die folgende Datei enthält employeeDaten Tabelle.

/tab1/employeedata/file1

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

Die oben genannten Daten in zwei Dateien mitHilfe Jahr partitioniert.

/tab1/employeedata/2012/file2

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

/tab1/employeedata/2013/file3

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

Hinzufügen einer Trennwand

Wir können Partitionen in eine Tabelle einfügen, indem Ändern die Tabelle. Nehmen wir an, wir haben eine Tabelle mit dem Namen Mitarbeiter mit Gebiete wie ID, Name, Gehalt, Benennung, Dept und yoj.

Syntax:

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, ...)

Die folgende Abfrage wird verwendet, um eine Trennwand zu der Tabelle employee hinzufügen.

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

Umbenennen einer Trennwand

Die Syntax dieses Befehls ist wie folgt.

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

Die folgende Abfrage wird verwendet, um eine Partition umbenennen:

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

Fallenlassen eine Trennwand

Die folgende Syntax wird verwendet, um Fallenlassen eine Trennwand ::

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

Die folgende Abfrage wird verwendet, um eine Partition zu fallen:

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