Jak pobrać / wygenerować instrukcję tworzenia dla istniejącej tabeli gałęzi?


91

Zakładając, że masz już „tabelę” w Hive, czy istnieje szybki sposób, podobnie jak inne bazy danych, aby uzyskać instrukcję „CREATE” dla tej tabeli?

Odpowiedzi:



27

Kroki, aby wygenerować Utwórz tabele ddls dla wszystkich tabel w bazie danych Hive i wyeksportować do pliku tekstowego, aby uruchomić później:

krok 1) utwórz plik .sh z poniższą zawartością, powiedzmy hive_table_ddl.sh

#!/bin/bash
rm -f tableNames.txt
rm -f HiveTableDDL.txt
hive -e "use $1; show tables;" > tableNames.txt  
wait
cat tableNames.txt |while read LINE
   do
   hive -e "use $1;show create table $LINE;" >>HiveTableDDL.txt
   echo  -e "\n" >> HiveTableDDL.txt
   done
rm -f tableNames.txt
echo "Table DDL generated"

krok 2) Uruchom powyższy skrypt powłoki, przekazując parametr „nazwa bazy danych” jako parametr

>bash hive_table_dd.sh <<databasename>>

wynik :

Wszystkie instrukcje tworzenia tabeli bazy danych zostaną zapisane w pliku HiveTableDDL.txt


1
w jaki sposób możemy się upewnić, że zasobniki i format przechowywania zostaną zreplikowane do nowej tabeli.
YouAreAwesome,

Po każdej instrukcji należy również dołączyć średnik, aby skrypt mógł zostać wykonany, wypowiadając hive -f HiveTableDDL.txt.
Muton

Ten skrypt kończy się niepowodzeniem z powodu poniższego błędu: Błąd podczas kompilowania instrukcji: FAILED: wiersz ParseException 1:18 nie może rozpoznać danych wejściowych w pobliżu „|” '|' w nazwie tabeli Wykonuję ten skrypt z beeline, ponieważ HDP 3.0 nie obsługuje dostępu do powłoki ula
Abhinav

@cfeduke ten skrypt podaje lokalizację tabel gałęzi. jak pominąć część lokalizacji w celu uruchomienia tych bibliotek ddl w innej lokalizacji ula? zmiana na więcej niż 1000 stołów nie jest możliwa
user1

2

Opisz sformatowany / rozszerzony wyświetli definicję danych tabeli w gałęzi

hive> describe Formatted dbname.tablename;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.