Hive-Tabelle erstellen: Intern, Ändern & Löschen mit Beispielen
⚡ Intelligente Zusammenfassung
Erstellen, Ändern und Ablegenping Tabellen in Apache Hive verwenden bekannte SQL-ähnliche DDL-Anweisungen, das Ergebnis hängt jedoch davon ab, ob es sich um eine interne Tabelle handelt, die von Hive verwaltet wird, oder um eine externe Tabelle, die lediglich Dateien beschreibt.
Tabellenoperationen wie Erstellen, Ändern und Löschenping In dieser Schritt-für-Schritt-Anleitung können Sie sich die Tabellen in Hive ansehen. Jeder Vorgang wird zunächst als Live-Sitzung und anschließend als wiederverwendbare Anweisung dargestellt.
Wie man eine Tabelle in Hive erstellt, ändert und löscht
Im folgenden Screenshot erstellen wir eine Tabelle mit Spalten und ändern den Tabellennamen.
- Die Tabelle guru_sample mit zwei Spaltennamen wie „empid“ und „empname“ wird erstellt.
- Anzeigen der in der guru99-Datenbank vorhandenen Tabellen
- guru_sample wird unter Tabellen angezeigt
- Tabelle „guru_sample“ wird in „guru_sampleNew“ geändert
- Wenn Sie den Befehl „show“ erneut ausführen, wird der neue Name guru_sampleNew angezeigt.
Die folgende Sitzung führt alle fünf Schritte nacheinander durch. hive> Die Eingabeaufforderung und die beiden SHOW TABLES-Aufrufe vor und nach der Umbenennung machen den Effekt sichtbar.
Dropping Tabelle guru_sampleNew:
Mit einer einzigen DROP TABLE-Anweisung wird die umbenannte Tabelle entfernt, und Hive antwortet mit OK.
Hive CREATE TABLE Syntax und häufig verwendete Klauseln
Das obige Beispiel verwendet die kürzestmögliche Form. Die dokumentierte Anweisung akzeptiert mehrere optionale Klauseln, von denen jede eine bestimmte Einstellung vornimmt; das Beispiel belässt diese auf dem Standardwert.
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type, ...)] [CLUSTERED BY (col_name, ...) INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, ...)];
| Klausel | Was es steuert |
|---|---|
| EXTERNAL | Es wird eine externe Tabelle erstellt, daher bleiben die Datendateien bei DROP an ihrem ursprünglichen Ort. |
| VORÜBERGEHEND | Erstellt eine sitzungsbezogene Tabelle, die nach Beendigung der Sitzung verschwindet. |
| WENN NICHT EXISTIERT | Unterdrückt den Fehler, wenn bereits eine Tabelle mit diesem Namen existiert. |
| AUFGETEILT DURCH | Teilt die Tabelle in ein Verzeichnis pro Schlüsselwert auf |
| GRUPPELT DURCH … IN n EIMER | Teilt Zeilen in eine feste Anzahl von Dateien auf. |
| ZEILENFORMAT / GESPEICHERT ALS | Legt das Trennzeichen (SerDe) und das Dateiformat fest, z. B. TEXTFILE, ORC oder Parquet. |
| STANDORT | Verweist die Tabelle auf einen bestimmten HDFS-Pfad anstelle des Standardpfads des Data Warehouse. |
| TBLPROPERTIES | Fügt Metadaten-Schlüssel-Wert-Paare hinzu, einschließlich external.table.purge |
Eine verwandte Form, CREATE TABLE new_table LIKE existing_table, kopiert ein Schema, ohne Zeilen zu kopieren. Strukturklauseln wie PARTITIONED BY und CLUSTERED BY werden im Leitfaden ausführlich behandelt. Hive-Partitionen und Buckets.
Tabellentypen und ihre Verwendung
Was Tabellen angeht, so funktioniert es genauso wie in traditionellen relationalen Datenbanken. Funktionen wie Filtern und Verknüpfen können auf Tabellen angewendet werden.
Hive arbeitet mit zwei Arten von Tabellenstrukturen, internen und externen Tabellen, abhängig vom Laden und Design des Schemas. HiveDie Wahl ist nicht kosmetischer Natur: Sie entscheidet darüber, wem die Datendateien gehören und was mit ihnen geschieht, wenn die Tabelle gelöscht wird.
Interne Tabellen in Hive
- Interne Tabellen sind naturgemäß eng miteinander verknüpft. Bei diesem Tabellentyp müssen wir zuerst die Tabelle erstellen und dann die Daten laden.
- Wir können dies als Daten zum Schema bezeichnen.
- Durch Tropfenping Diese Tabelle, sowohl die Daten als auch das Schema, werden entfernt.
- Der Speicherort dieser Tabelle ist /user/hive/warehouse.
- Interne Tabellen werden auch als verwaltete Tabellen bezeichnet und unterstützen als einzige die Transaktionen TRUNCATE, ARCHIVE, MERGE, CONCATENATE und ACID.
Wann sollte man eine interne Tabelle wählen?
- Wenn die Verarbeitungsdaten im lokalen Dateisystem verfügbar sind
- Wenn wir möchten, dass Hive den gesamten Lebenszyklus der Daten einschließlich der Löschung verwaltet
Beispielcode-Snippet für interne Tabelle
- Um die interne Tabelle zu erstellen
Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING); Row format delimited Fields terminated by '\t';
- Laden Sie die Daten in die interne Tabelle
Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
- Zeigen Sie den Inhalt der Tabelle an
Hive>select * from guruhive_internaltable;
- Um die interne Tabelle zu löschen
Hive>DROP TABLE guruhive_internaltable;
Wenn Sie die Tabelle „guruhive_internaltable“ löschen, werden einschließlich ihrer Metadaten und Daten aus Hive entfernt. Sofern nicht explizit „PURGE“ angegeben wird, werden die Dateien in den HDFS-Papierkorb verschoben, anstatt sofort gelöscht zu werden.
Im folgenden Screenshot können wir die Ausgabe aller vier Anweisungen in einer Sitzung beobachten, die mit dem erfolgreichen Ablegen endet.
Im obigen Code und im Screenshot führen wir folgende Schritte aus:
- Erstellen Sie die interne Tabelle
- Laden Sie die Daten in die interne Tabelle
- Zeigen Sie den Inhalt der Tabelle an
- Um die interne Tabelle zu löschen
Externe Tabellen in Hive
- Externe Tabellen sind lose gekoppelt. Die Daten sind in HDFS verfügbar. Die Tabelle wird auf Basis der HDFS-Daten erstellt.
- Anders ausgedrückt: Es wird ein Schema für die Daten erstellt.
- Zum Zeitpunkt des Abwurfsping Die Tabelle löscht lediglich das Schema; die Daten bleiben wie zuvor in HDFS verfügbar.
- Externe Tabellen bieten die Möglichkeit, mehrere Schemata für die in HDFS gespeicherten Daten zu erstellen, anstatt die Daten jedes Mal zu löschen, wenn das Schema aktualisiert wird
- Ab Hive 4.0.0 bewirkt das Setzen der Tabelleneigenschaft external.table.purge auf true, dass DROP die Daten ebenfalls löscht.
Wann sollte man sich für einen externen Tisch entscheiden?
- Wenn die Verarbeitungsdaten in HDFS verfügbar sind
- Nützlich, wenn die Dateien außerhalb von Hive verwendet werden
Beispielcode-Snippet für externe Tabelle
- Externe Tabelle erstellen
Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING) Row format delimited Fields terminated by '\t' LOCATION '/user/guru99hive/guruhive_external';
- Wenn wir den Speicherort bei der Tabellenerstellung nicht angeben, können wir die Daten manuell laden.
Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
- Zeigen Sie den Inhalt der Tabelle an
Hive>select * from guruhive_external;
- Um die externe Tabelle zu löschen
Hive>DROP TABLE guruhive_external;
Der folgende Screenshot zeigt die Ausgabe. Beachten Sie, dass der letzte Schritt nur das Schema entfernt – die Datei unter dem Pfad LOCATION bleibt unberührt.
Im obigen Code führen wir folgende Schritte aus:
- Erstellen Sie die externe Tabelle
- Laden Sie die Daten in die externe Tabelle
- Zeigen Sie den Inhalt der Tabelle an
- Dropping externe Tabelle
Unterschied zwischen internen und externen Tabellen
| Funktion | Intern | Extern |
|---|---|---|
| Schema | Daten zum Schema | Schema zu Daten |
| Lagerraum | /user/hive/warehouse | HDFS-Standort angegeben von LOCATION |
| Datenverfügbarkeit | Innerhalb des lokalen Dateisystems | Innerhalb von HDFS |
| Wirkung von TROP | Löscht Schema und Daten | Löscht nur das Schema, es sei denn, external.table.purge ist auf true gesetzt. |
| TRUNCATE-Unterstützung | Unterstützt | Nicht unterstützt |
| ACID-Transaktionen | Unterstützt | Nicht unterstützt |
Das Apache Hive-Dokumentation Die Regel lautet ganz klar: Hive geht davon aus, dass es die Daten für verwaltete Tabellen besitzt, und davon, dass es dies für externe Tabellen nicht tut, und jeder oben genannte Unterschied ergibt sich aus dieser einen Annahme.
ALTER TABLE- und DROP TABLE-Befehlsreferenz
Die obigen Screenshots zeigen lediglich eine Umbenennung und eine Löschung. Dies sind die Anweisungen, die ein Anwender am häufigsten auf eine bestehende Tabelle anwendet.
| Erklärung | Zweck |
|---|---|
| ALTER TABLE Tabellenname RENAME TO neuer_Name; | Benennt die Tabelle um; bei einer verwalteten Tabelle wird dadurch auch das zugehörige HDFS-Verzeichnis verschoben. |
| ALTER TABLE table_name ADD COLUMNS (col_name data_type); | Fügt dem Schema eine oder mehrere Spalten am Ende hinzu. |
| ALTER TABLE Tabellenname CHANGE COLUMN alter_Name neuer_Name Datentyp; | Benennt eine Spalte um oder ändert ihren Datentyp |
| ALTER TABLE Tabellenname REPLACE COLUMNS (…); | Ersetzt die gesamte Spaltenliste durch eine neue. |
| ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE'); | Konvertiert eine verwaltete Tabelle in eine externe Tabelle, und FALSE macht dies rückgängig. |
| DROP TABLE [IF EXISTS] table_name [PURGE]; | Entfernt die Tabelle; PURGE überspringt den Papierkorb, sodass die Daten nicht wiederhergestellt werden können. |
| TRUNCATE [TABLE] table_name; | Entfernt alle Zeilen, behält aber das Schema bei; nur verwaltete Tabellen |
Zwei Sicherheitsvorkehrungen sollten in jedes Skript eingebaut werden. IF EXISTS verhindert, dass ein Löschvorgang für eine bereits gelöschte Tabelle fehlschlägt, und DESCRIBE FORMATTED prüft vor dem Ausführen des Löschvorgangs, ob es sich bei dem Ziel um eine MANAGED_TABLE oder eine EXTERNAL_TABLE handelt.





