2016-07-12 8 views

Antwort

0

Keine externe Tabelle nur Verweise, die aktuelle Datei wird gelöscht wird noch besteht vor Ort.

Externe Tabelle Datendateien werden nicht von Tisch im Besitz weder bewegten Lager Verzeichnis hive

Nur PARTITION Meta wird von hive Metastore Tabellen ..

Unterschied zwischen internen & externen Tabellen gelöscht werden:

Für externe Tabellen -

Externer Tabl e speichert Dateien auf dem HDFS-Server, Tabellen sind jedoch nicht vollständig mit der Quelldatei verknüpft.

Wenn Sie eine externe Tabelle löschen, verbleibt die Datei auf dem HDFS-Server.

Wenn Sie zum Beispiel eine externe Tabelle namens "table_test" in HIVE mit HIVE-QL erstellen und die Tabelle mit der Datei "file" verknüpfen, löscht das Löschen von "table_test" aus HIVE nicht "file" aus HDFS.

Externe Tabellendateien sind für jeden zugänglich, der Zugriff auf die HDFS-Dateistruktur hat. Daher muss die Sicherheit auf HDFS-Datei/Ordner-Ebene verwaltet werden.

Metadaten werden auf dem Master-Knoten verwaltet und löschen eine externe Tabelle von HIVE, löscht nur die Metadaten, nicht die Daten/Datei.

Für Interne Tabellen-

in einem Verzeichnis auf Einstellungen in hive.metastore.warehouse.dir basierend gespeichert, standardmäßig internen Tabellen werden im folgende Verzeichnis „/ user/Nest/Lager“ Sie können gespeichert Ändern Sie es, indem Sie den Speicherort in der Konfigurationsdatei aktualisieren. Löschen der Tabelle löscht die Metadaten & Daten von Master-Knoten bzw. HDFS. Interne Dateisicherheit der Tabelle wird ausschließlich über HIVE gesteuert. Sicherheit muss innerhalb von HIVE verwaltet werden, wahrscheinlich auf der Schema-Ebene (abhängig von Organisation zu Organisation).

Hive kann interne oder externe Tabellen haben Dies ist eine Auswahl, die beeinflusst, wie Daten geladen, gesteuert und verwaltet werden.

Externe Tabellen, wenn:

Die Daten auch außerhalb von Hive verwendet wird. Beispielsweise werden die Datendateien von einem vorhandenen Programm gelesen und verarbeitet, das die Dateien nicht sperrt. Daten müssen auch nach einer DROP TABLE in der zugrunde liegenden Position verbleiben. Dies kann zutreffen, wenn Sie mehrere Schemas (Tabellen oder Ansichten) auf einen einzelnen Datensatz verweisen oder wenn Sie verschiedene mögliche Schemas durchlaufen. Hive sollte keine eigenen Daten besitzen und Einstellungen, Verzeichnisse usw. kontrollieren.Vielleicht hast du ein anderes Programm oder einen anderen Prozess, der diese Dinge tun wird. Sie erstellen keine Tabelle basierend auf der vorhandenen Tabelle (AS SELECT).

Verwendung interner Tabellen, wenn:

Die Daten vorübergehend ist. Sie möchten, dass Hive den Lebenszyklus der Tabelle und der Daten vollständig verwaltet.

Hinweis: Meta-Tabelle, wenn Sie auf die Datenbank aussehen in wird (konfiguriert details)

|BUCKETING_COLS  | 
| COLUMNS   | 
| DBS    | 
| NUCLEUS_TABLES  | 
| PARTITIONS   | 
| PARTITION_KEYS  | 
| PARTITION_KEY_VALS | 
| PARTITION_PARAMS | 
| SDS    | 
| SD_PARAMS   | 
| SEQUENCE_TABLE  | 
| SERDES    | 
| SERDE_PARAMS  | 
| SORT_COLS   | 
| TABLE_PARAMS  | 
| TBLS    | 
+0

Was also ist das genaue Ergebnis dieses Befehls? Es ist klar, nicht den Verweis auf die Tabelle zu löschen, es ist Partition zu löschen, aber das auch nur bestimmte Partition, es ist wenig verwirrend, was wirklich passiert. – Dhiraj

+0

Nur PARTITION Meta wird aus den Hive Metastoretabellen gelöscht ... –

+0

Dafür hätte man einfach ALTER TABLE MyTable DROP WENN EXISTS PARTITION (Jahr, Monat, Tag) sagen können; das hätte Partitionsmetadaten gelöscht - warum liefern Sie Werte für eine bestimmte Partition? – Dhiraj

0

Partitionierungsschema ist keine Partition. Partitionierungsschema ist Teil der Tabelle DDL. Partitionsinformationen werden in Metadaten gespeichert (einfach gesagt: Partitionsschlüsselwert + sein Speicherort). Daten selbst werden in Dateien in Partitionsverzeichnis (Ordner) gespeichert. Wenn Sie die Partition der externen Tabelle löschen, bleibt der Speicherort unverändert, wird jedoch als Partition abgehängt. Es ist ziemlich normal, dass einige Versionen der Partition nicht angehängt sind (zum Beispiel frühere Versionen). Sie können die Partition löschen und einen anderen Ordner (Verzeichnis) als Partition mounten (alter table add partition ...). Löschen Sie auch die externe Tabelle. Löschen Sie den Tabellenordner nicht mit den darin enthaltenen Dateien. Und später können Sie eine Tabelle mit diesem Ort (Ordner) erstellen.

Verwandte Themen