Jak skopiować całą tabelę hive z jednej bazy danych do innej bazy danych

Mam domyślne db w tabeli hive, która zawiera 80 tabel .
Utworzyłem jeszcze jedną bazę danych i chcę skopiować wszystkie tabele z domyślnego DB do nowych baz danych.

Czy Jest jakiś sposób na skopiowanie z jednego DB do drugiego DB, bez tworzenia indywidualnej tabeli.

Proszę dać mi znać, jeśli jakieś rozwiązanie.. Z góry dzięki

Author: Sohil Shivani, 2014-10-29

4 answers

Mogę wymyślić kilka opcji.

  1. Użyj CTA.

    CREATE TABLE NEWDB.NEW_TABLE1 AS select * from OLDDB.OLD_TABLE1;
    CREATE TABLE NEWDB.NEW_TABLE2 AS select * from OLDDB.OLD_TABLE2;
    ...
    
  2. Użyj funkcji importu Ula https://cwiki.apache.org/confluence/display/Hive/LanguageManual + ImportExport

Mam nadzieję, że to pomoże.
 26
Author: Venkat Ankam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-22 05:04:13

Utwórz zewnętrzną tabelę new_db.tabela jak old_db.table location " (ścieżka do pliku w pliku hdfs)';

Jeśli masz partycję w tabeli to musisz dodać partycję w new_db.stolik.

 4
Author: bunty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-10 14:40:41

Są to prawdopodobnie najszybszy i najprostszy sposób kopiowania / przenoszenia tabel z jednego db do drugiego.

Aby przenieść stół źródło

Od wersji 0.14, możesz użyć następującego polecenia, aby przenieść tabelę z jednej bazy danych do drugiej w tym samym metastore:

alter table old_database.table_a rename to new_database.table_a;

Powyższe instrukcje również przeniosą dane tabeli na hdfs, jeśli table_a jest tabelą zarządzaną.

Aby skopiować tabelę

Zawsze możesz użyć CREATE TABLE <new_db>.<new_table> AS SELECT * FROM <old_db>.<old_table>;. Ale wierzę, że ten alternatywny metoda kopiowania bazy danych za pomocą hdfs dfs -cp, a następnie tworzenia tabel za pomocą LIKE może być nieco szybsza, jeśli tabele są ogromne:

hdfs dfs -cp /user/hive/warehouse/<old_database>.db /user/hive/warehouse/<new_database>.db

A potem w ulu:

CREATE DATABASE <new_database>;
CREATE TABLE <new_database>.<new_table> LIKE <old_database>.<old_table>;
 2
Author: pratpor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-19 10:54:02

Możesz wybrać jedną z następujących opcji:

Składnia wygląda mniej więcej tak: Eksport tabeli table_or_partition do hdfs_path; IMPORT [[zewnętrzny] TABLE table_or_partition] z hdfs_path [lokalizacja [table_location]];

Niektóre przykładowe stwierdzenia wyglądałyby jak: EXPORT TABLE TO 'location in hdfs';

Użyj test_db; IMPORT z "lokalizacja w hdfs";

Export Import może być również stosowany na partycji: EXPORT Table PARTITION (loc="USA") to "lokalizacja w hdfs";

Poniższe polecenia import importują do tabeli zewnętrznej zamiast zarządzanej IMPORT tabeli zewnętrznej z "lokalizacja w hdfs "lokalizacja" / lokalizacja / of / external / table";

 1
Author: Sohil Shivani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-06 14:03:54