Hive-Partitionen & Eimer mit Beispiel

Inhaltsverzeichnis:

Anonim

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

Was sind Partitionen?

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

Partition ist hilfreich, wenn die Tabelle einen oder mehrere Partitionsschlüssel enthält. Partitionsschlüssel sind grundlegende Elemente, um zu bestimmen, wie die Daten in der Tabelle gespeichert werden.

Zum Beispiel : -

"Client mit einigen E-Commerce-Daten, die zu Indien-Operationen gehören, in denen jeder Staat (38 Staaten) Operationen als Ganzes erwähnt. Wenn wir die Staatsspalte als Partitionsschlüssel verwenden und Partitionen für diese Indien-Daten als Ganzes durchführen, können wir dies." um die Anzahl der Partitionen (38 Partitionen) zu erhalten, die der Anzahl der in Indien vorhandenen Bundesstaaten (38) entspricht, sodass die einzelnen Statusdaten in Partitionstabellen separat angezeigt werden können.

Beispielcode-Snippet für Partitionen

  1. Erstellung der Tabelle aller Zustände
create table all states(state string, District string,Enrolments string)row format delimitedfields terminated by ',';
  1. Laden von Daten in die erstellte Tabelle aller Zustände
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. Laden von Daten in Partitionstabelle
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. Es werden 38 Partitionsausgaben im HDFS-Speicher mit dem Dateinamen als Statusnamen vorhanden sein. Wir werden dies in diesem Schritt überprüfen

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

Aus dem obigen Code machen wir folgende Dinge

  1. Erstellung einer Tabelle aller Bundesstaaten mit 3 Spaltennamen wie Bundesstaat, Distrikt und Registrierung
  2. Laden von Daten in die Tabelle aller Zustände
  3. Erstellung einer Partitionstabelle mit Status als Partitionsschlüssel
  4. In diesem Schritt Festlegen des Partitionsmodus als nicht streng (In diesem Modus wird der dynamische Partitionsmodus aktiviert.)
  5. Laden von Daten in die Partition tablestate_part
  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 Statusname. Wir werden dies in diesem Schritt überprüfen. In diesem Schritt sehen wir die 38 Partitionsausgaben in HDFS

Was ist Eimer?

Buckets in Hive werden zum Trennen von Hive-Tabellendaten in mehrere Dateien oder Verzeichnisse verwendet. Es wird für eine effiziente Abfrage verwendet.

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

Schritt 1) Erstellen eines Buckets wie unten gezeigt.

Aus dem obigen Screenshot

  • Wir erstellen sample_bucket mit Spaltennamen wie Vorname, Job-ID, Abteilung, Gehalt und Land
  • Wir erstellen 4 Eimer über.
  • Sobald die Daten automatisch geladen werden, platzieren Sie sie in 4 Buckets

Schritt 2) Laden von Daten in den Tabellenbecher

Angenommen, die "Employees-Tabelle" wurde bereits im Hive-System erstellt. In diesem Schritt wird das Laden von Daten aus der Mitarbeitertabelle in den Tabellenbeispiel-Bucket angezeigt.

Bevor wir Mitarbeiterdaten in Buckets verschieben, stellen Sie sicher, dass sie aus Spaltennamen wie Vorname, Job-ID, Abteilung, Gehalt und Land bestehen.

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

Schritt 3) Anzeigen von 4 Buckets, die in Schritt 1 erstellt wurden

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