webentwicklung-frage-antwort-db.com.de

Übertragen der Hive-Tabelle von einer Datenbank in eine andere

Ich muss eine Hive-Tabelle von einer Datenbank in eine andere verschieben. Wie kann ich das machen?

23
user2942227

Seit 0.14 können Sie die folgende Anweisung verwenden, um eine Tabelle in eine andere Datenbank in demselben Metastore zu verschieben:

use old_database;
alter table table_a rename to new_database.table_a

Die obigen Anweisungen verschieben auch die Tabellendaten in hdfs, wenn table_a eine verwaltete Tabelle ist.

51
Jay

externe Tabelle erstellen new_db.table wie alter_db.table-Speicherort '(Pfad der Datei in hdfs-Datei)';

wenn Sie eine Partition in der Tabelle haben, müssen Sie die Partition in new_db.table hinzufügen.

3
bunty

Sie können versuchen - CTAS

USE NEW_DB;

CREATE TABLE table
AS
SELECT * FROM OLD_DB.table;

DROP TABLE OLD_DB.table;
2
user 923227

Wenn die Tabellen partitioniert sind, können Sie im Prinzip partitionierte Daten von alten in neue Tabellen kopieren und alte Tabellen löschen.

  1. use new_db;
  2. Neue Tabelle in neuer Datenbank erstellen:

    Create Table table_name;
    
  3. Fügen Sie mit dem Befehl Daten aus alten Tabellen in neue Tabellen ein:

    insert into new_table_name partition (partition_column='value') 
      select col1, col2, col3, col4 from old_db.old_table_name 
      where partition_column='value';
    
1
VPS

Das könnte für Sie hilfreich sein.

EXPORT TABLE table_or_partition TO hdfs_path;
IMPORT [[EXTERNAL] TABLE table_or_partition] FROM hdfs_path [LOCATION[table_location]];

Einige Beispielsätze würden folgendermaßen aussehen:

EXPORT TABLE <table name> TO 'location in hdfs';

Use test_db;
IMPORT FROM 'location in hdfs';

Export Import can be appled on a partition basis as well:
EXPORT TABLE <table name> PARTITION (loc="USA") to 'location in hdfs';

Die folgenden Importbefehle werden in eine externe Tabelle anstelle einer verwalteten Tabelle importiert

IMPORT EXTERNAL TABLE FROM 'location in hdfs' LOCATION ‘/location/of/external/table’;
1
Sohil Shivani

https://issues.Apache.org/jira/browse/Hive-2496

diese Verbesserung ist noch offen. Ich weiß, dass es in Impala möglich ist, derzeit nicht in Hive. 

Die Entwicklung scheint zum Stillstand gekommen. Sie können auf dieser Seite für diese Ausgabe stimmen, um etwas Aufmerksamkeit zu erregen.

0
Tagar

Die Datenbank, die Sie migrieren möchten, hätte Ihnen einen Datenbankkonnektor zur Verfügung gestellt. Mit Hilfe von sqoop und dem Datenbank-Konnektor können Sie ihn migrieren. Es wäre großartig, wenn Sie sich genauer mit der Art der Datenbank befassen, in die Sie die Daten migrieren möchten

0
kris433

In den Antworten gibt es viele Methoden, aber keine Anleitung, wann

  1. Verwenden Sie CTAS, wenn Ihr Ziel eine verwaltete Tabelle ist:

    CREATE NEW_DB.TABLE table AS SELECT * FROM OLD_DB.TABLE;
    DROP TABLE OLD_DB.TABLE;
    
  2. Wenn Sie nur einen einfachen Tabellennamen verwenden möchten, ändern Sie den Speicherort der Tabelle jedoch nicht:

    alter table old_database.table_a rename to new_database.table_a;
    
  3. Verwenden von CREATE LIKE und INSERT:

    CREATE NEW_DB.TABLE table LIKE OLD_DB.TABLE;
    INSERT INTO TABLE new_table_name partition (partition_column) select col1, col2, col3, col4 from old_db.old_table_name where partition_column='value';
    DROP TABLE old_db.old_table_name;
    
0
Ani Menon