2012-11-24 5 views
8

Ich bin mitNest - wie externen hive Tisch fällt zusammen mit Daten

drop table <table_name> 

Wenn ich die Tabelle mit dem gleichen Schema und den Namen neu erstellen, erhalte ich die alten Daten zurück. Sollte ich das Tabellenverzeichnis aus dem hdfs-Dateisystem entfernen, um die Daten vollständig loszuwerden?

Antwort

1

Keine Notwendigkeit, das Verzeichnis in hdfs zu entfernen, außer Sie brauchen mehr hdfs Raum.

Wenn Sie neue Daten ersetzen möchten, müssen Sie nur Datei in hdfs ersetzen.

Wenn Sie den Tabellennamen für andere Zwecke verwenden möchten, löschen Sie die Tabelle und entfernen Sie das Verzeichnis in hdfs.

In der Tat, ich denke, das ist ein sehr praktisches Feature, das Sie das Schema Ihrer Tabelle ändern können (zum Beispiel Sie Feldname oder concat zwei Feld zu einem Feld ändern) ohne Daten zu verlieren.

+1

Mein Problem ist, ich muss die Daten loswerden, aber Tabelle mit dem gleichen Namen und Schema neu erstellen? – amrk7

+4

Die hdfs-Datei entfernen, Tabelle löschen; Importieren Sie eine neue Datei in hdfs und erstellen Sie eine neue Tabelle. – pensz

2

Obwohl ich mit pensz, eine leichte Veränderung zustimmen, Sie braucht nicht der Tisch fallen. Ersetzen Sie einfach die externe hdfs-Datei durch die neue Datei, die Sie möchten (die Struktur der ersetzten Datei sollte dieselbe sein), und wenn Sie * in der vorherigen Tabelle auswählen, werden Sie feststellen, dass die neuen Daten und nicht die alten Daten enthalten sind ein.

Externe Tabellen bezeichnen im Grunde nur das Schema der Daten und den Speicherort der Datei. Sie können viele Dateien zum selben Speicherort hinzufügen, und Ihre Tabelle enthält automatisch alle Daten, die sich auf diese Dateien beziehen. In ähnlicher Weise können Sie alle Daten ersetzen, und Ihre Tabelle spiegelt dies automatisch wider.

+1

Wenn Ihre Tabelle jedoch partitioniert ist, sind geringfügige Änderungen erforderlich. Ich nehme an, dein Tisch ist nicht. –

+0

Danke! tats viele Informationen – amrk7

1

Erster Pfad der Tabelle erhalten mit folgenden Befehl ein:

hive> formatiert database_name.table_name beschreiben;

Kopieren Sie dann ganze Stelle, die in der Beschreibung erscheinen, zum Beispiel: /user/hive/warehouse/database_name.db/table_name

Nach dieser Verwendung Befehl folgend alle aus gegebener Tabelle, die Daten zu kürzen:

***hive> dfs -rmr /user/hive/warehouse/database_name.db/table_name;*** 

ODER

***hive> dfs -rm -r /user/hive/warehouse/database_name.db/table_name;*** 

Dann können Sie es abwischen vollständig uns Befehl DROP TABLE.

0

wenn es sich um eine externe Tabelle ist, bedeutet die Tabelle löschen Sie löschen nur das Schema

so müssen Sie die Datei manuell aus HDFS löschen

oder eine neue Tabelle erstellen, und geben Sie eine andere Datei-Speicherort in tbl Eigenschaften