Hive - Partitionierung

Hive organisiert Tabellen in Partitionen. Auf diese Weise können Sie eine Tabelle anhand der Werte partitionierter Spalten wie Datum, Stadt und Abteilung in verwandte Teile unterteilen. Mit der Partition ist es einfach, einen Teil der Daten abzufragen.

Tabellen oder Partitionen sind unterteilt in buckets,Bereitstellung einer zusätzlichen Struktur für die Daten, die für eine effizientere Abfrage verwendet werden können. Das Bucketing funktioniert basierend auf dem Wert der Hash-Funktion einer Spalte einer Tabelle.

Zum Beispiel eine Tabelle mit dem Namen Tab1enthält Mitarbeiterdaten wie ID, Name, Abteilung und Yoj (dh Jahr des Beitritts). Angenommen, Sie müssen die Details aller Mitarbeiter abrufen, die 2012 beigetreten sind. Eine Abfrage durchsucht die gesamte Tabelle nach den erforderlichen Informationen. Wenn Sie jedoch die Mitarbeiterdaten mit dem Jahr partitionieren und in einer separaten Datei speichern, wird die Abfrageverarbeitungszeit verkürzt. Das folgende Beispiel zeigt, wie eine Datei und ihre Daten partitioniert werden:

Die folgende Datei enthält eine Employededata-Tabelle.

/ tab1 / employeeeedata / file1

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

Die obigen Daten werden unter Verwendung des Jahres in zwei Dateien aufgeteilt.

/ tab1 / employeeeedata / 2012 / file2

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

/ tab1 / employeeeedata / 2013 / file3

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

Hinzufügen einer Partition

Wir können einer Tabelle Partitionen hinzufügen, indem wir die Tabelle ändern. Nehmen wir an, wir haben eine Tabelle namensemployee mit Feldern wie ID, Name, Gehalt, Bezeichnung, Abteilung 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 der Mitarbeitertabelle eine Partition hinzuzufügen.

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

Partition umbenennen

Die Syntax dieses Befehls lautet wie folgt.

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

Die folgende Abfrage wird zum Umbenennen einer Partition verwendet:

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

Löschen einer Partition

Die folgende Syntax wird zum Löschen einer Partition verwendet:

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

Die folgende Abfrage wird verwendet, um eine Partition zu löschen:

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