Hive-Partitionen und Buckets mit Beispiel

Tabellen, Partitionen und Buckets sind die Teile der Hive-Datenmodellierung.

Was sind Partitionen?

Hive-Partitionen sind eine Möglichkeit, Tabellen in Partitionen zu organisieren, indem Tabellen basierend auf Partitionsschlüsseln in verschiedene Teile unterteilt werden.

Die Partitionierung ist hilfreich, wenn die Tabelle über einen oder mehrere Partitionsschlüssel verfügt. Partitionsschlüssel sind grundlegende Elemente zur Bestimmung, wie die Daten in der Tabelle gespeichert werden.

Für Beispiel: -

„Der Kunde besitzt einige E-Commerce-Daten, die zu indischen Operationen gehören, in denen alle Operationen eines Bundesstaates (38 Bundesstaaten) als Ganzes aufgeführt sind. Wenn wir die Spalte „Bundesstaat“ als Partitionsschlüssel verwenden und Partitionen für diese Indien-Daten als Ganzes durchführen, können wir eine Anzahl von Partitionen (38 Partitionen) ermitteln, die der Anzahl der in Indien vorhandenen Bundesstaaten (38) entspricht. So können die Daten jedes Bundesstaates separat in Partitionstabellen angezeigt werden.

Beispielcode-Snippet für Partitionen

  1. Erstellung einer Tabelle aller Zustände
create table all states(state string, District string,Enrolments string)

row format delimited

fields terminated by ',';
  1. Daten werden in alle Status der erstellten Tabelle geladen
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
  1. Erstellung einer Partitionstabelle
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
  1. Für die Partition müssen wir diese Eigenschaft festlegen
    set hive.exec.dynamic.partition.mode=nonstrict
  2. Daten werden in die Partitionstabelle geladen
INSERT OVERWRITE TABLE state_part PARTITION(state)
SELECT district,enrolments,state from  allstates;
  1. Tatsächliche Verarbeitung und Bildung von Partitionstabellen basierend auf dem Status als Partitionsschlüssel
  2. Im HDFS-Speicher wird es 38 Partitionsausgaben mit dem Dateinamen als Statusnamen geben. Wir werden dies in diesem Schritt überprüfen

Die folgenden Screenshots zeigen die Ausführung des oben genannten Codes

Hive-Partitionen

Hive-Partitionen

Hive-Partitionen

Hive-Partitionen

Aus dem obigen Code machen wir folgende Dinge

  1. Erstellung einer Tabelle aller Bundesstaaten mit 3 Spaltennamen wie Bundesstaat, Bezirk und Einschreibung
  2. Daten werden in die Tabelle aller Zustände geladen
  3. Erstellung einer Partitionstabelle mit Status als Partitionsschlüssel
  4. In diesem Schritt wird der Partitionsmodus als nicht streng festgelegt (dieser Modus aktiviert den dynamischen Partitionsmodus).
  5. Daten werden in die Partition tablestate_part geladen
  6. Tatsächliche Verarbeitung und Bildung von Partitionstabellen basierend auf dem Status als Partitionsschlüssel
  7. Es gibt 38 Partitionsausgaben im HDFS-Speicher mit dem Dateinamen als Statusnamen. Wir werden dies in diesem Schritt überprüfen. In diesem Schritt sehen wir die 38 Partitionsausgaben in HDFS

Was sind Eimer?

Buckets in Hive werden zum Aufteilen von Hive-Tabellendaten in mehrere Dateien oder Verzeichnisse verwendet. Es dient der effizienten Abfrage.

  • Die in diesen Partitionen vorhandenen Daten können weiter in Buckets unterteilt werden
  • Die Aufteilung erfolgt basierend auf dem Hash bestimmter Spalten, die wir in der Tabelle ausgewählt haben.
  • Buckets verwenden im Backend eine Art Hashing-Algorithmus, um jeden Datensatz zu lesen und ihn in Buckets zu platzieren
  • In Hive müssen wir Buckets mithilfe von aktivieren set.hive.enforce.bucketing=true;

Schritt 1) Erstellen Sie einen Bucket wie unten gezeigt.

Bienenstockeimer

Aus dem obigen Screenshot

  • Wir erstellen „sample_bucket“ mit Spaltennamen wie „Vorname“, „Job_ID“, „Abteilung“, „Gehalt“ und „Land“.
  • Wir erstellen hier 4 Eimer.
  • Sobald die Daten automatisch geladen wurden, platzieren Sie sie in 4 Buckets

Schritt 2) Daten werden in den Tabellenbeispiel-Bucket geladen

Vorausgesetzt, dass die „Mitarbeitertabelle“ bereits im Hive-System erstellt wurde. In diesem Schritt sehen wir das Laden von Daten aus der Mitarbeitertabelle in den Tabellenbeispiel-Bucket.

Bevor wir mit dem Verschieben von Mitarbeiterdaten in Buckets beginnen, stellen Sie sicher, dass diese aus Spaltennamen wie „Vorname“, „Job_ID“, „Abteilung“, „Gehalt“ und „Land“ bestehen.

Hier laden wir Daten aus der Mitarbeitertabelle in den Beispiel-Bucket.

Bienenstockeimer

Schritt 3)Es werden 4 Buckets angezeigt, die in Schritt 1 erstellt wurden

Bienenstockeimer

Auf dem obigen Screenshot können wir sehen, dass die Daten aus der Mitarbeitertabelle in 4 Buckets übertragen werden, die in Schritt 1 erstellt wurden.