Come ottenere / generare l'istruzione create per una tabella hive esistente?


90

Supponendo che tu abbia già "table" in Hive, esiste un modo rapido come altri database per essere in grado di ottenere l'istruzione "CREATE" per quella tabella?

Risposte:



26

Passaggi per generare Crea tabella ddls per tutte le tabelle nel database Hive ed esportare in file di testo per l'esecuzione in seguito:

passaggio 1) crea un file .sh con il contenuto di seguito, ad esempio 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"

passaggio 2) Esegui lo script di shell precedente passando "nome database" come parametro

>bash hive_table_dd.sh <<databasename>>

produzione :

Tutte le istruzioni create table del tuo DB verranno scritte in HiveTableDDL.txt


1
come possiamo assicurarci che i bucket e il formato di archiviazione vengano replicati in una nuova tabella.
YouAreAwesome

È inoltre necessario aggiungere un punto e virgola dopo ogni istruzione in modo che lo script possa essere eseguito pronunciando hive -f HiveTableDDL.txt.
Muton

Questo script non funziona con il seguente errore: Errore durante la compilazione dell'istruzione: FAILED: ParseException riga 1:18 non può riconoscere l'input vicino a '|' '|' nel nome della tabella sto eseguendo questo script con beeline poiché HDP 3.0 non supporta l'accesso alla shell hive
Abhinav

@cfeduke questo script fornisce la posizione delle tabelle dell'alveare. come saltare la parte della posizione per eseguire questi ddl in un'altra posizione dell'hive? non è possibile modificare su più di 1000 tabelle
user1

2

Descrivi formattato / esteso mostrerà la definizione dei dati della tabella in hive

hive> describe Formatted dbname.tablename;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.