2016-05-31 15 views
0

Angenommen, Sie haben zwei externe Hive-ORC-Tabellen. Beide haben das gleiche Schema mit gleichen Datentypen, gleichen Partitionen und gleichen Buckets.Wiederherstellen der Hive-ORC-Tabelle nach dem Ändern der Quellenposition?

Ich versuche, Tabelle A zu löschen und den Speicherort der Tabelle B auf den Quellort von Tabelle A festzulegen. Ich habe beide versucht:

alter tableB set location "hdfs://.../tableA" 

und

msck repair table B 

ohne Glück.

+1

Haben Sie versucht, die Partitionsspeicherorte ebenfalls festzulegen? – leftjoin

+0

Um den von @leftjoin aufgeworfenen Punkt für eine partitionierte Tabelle zu betonen, ist der "location" auf Tabellenebene nur das ** Standard-Stammverzeichnis für zukünftige Partitionen **. Bestehende Partitionen haben ihren eigenen "Standort" in der Metasoredatenbank registriert. Du musst sie alle ändern, eins nach dem anderen. –

+0

Oder Sie können versuchen, * (1) * alle Partitionen aus Tabelle B * (2) zu löschen * Ort für Tabelle B ändern * (3) * Führen Sie "MSCK repair" aus, um die Unterverzeichnisse automatisch zu erkennen. In dieser Reihenfolge. –

Antwort

0

Da es sich um externe Tabellen handelt, wenn Sie sie löschen, bleiben die Dateien erhalten. Alles, was Sie tun müssen, ist Tabelle A und Tabelle b fallen zu lassen. Erstellen Sie dann Tabelle b erneut, indem Sie den Speicherort der Tabelle A verwenden.

drop tableA; 
drop tableB; 
create external table if not exists tableB (
....your existing DDL 
) 
location 'tableA path';