2017-11-03 3 views
0


Ich muss eine Liste aller Spalten in allen Tabellen aus allen Datenbanken in meinem Hive erstellen.Wie listet ich alle Spalten in allen Tabellen in allen Datenbanken in Hive

Ich brauche eine Zeile wie:

Database.table.column column_type comment 

Natürlich kann ich

show databases; 

verwenden und für jede Datenbank kann ich

show tables; 

und für jede Tabelle Verwendung:

describe table_name; 

Offensichtlich kann ich Hive_metastore Datenbank verwenden, die irgendwo in meiner Postgress Datenbank ist, aber ich habe es nicht accesss.

Aber ich hätte gerne ein Bash-Skript, das über Datenbanken-> Tabellen-> Spalten durchlaufen und die Details erhalten würde.

Ich habe mit Erzeugen einer Liste der Datenbanken gestartet:

hive -e 'show databases;' | tee databases.txt 

, als ich über die Datenbanken Schleife vorging und eine Liste der Tabellen machen:

#!/bin/bash 

for i in `cat databases.txt`; 
# w i mamy liste baz 
    do 
    hive -e 'show tables where database = $i;' | tee tables.txt 

done 

Aber ich fühle mich in Därme, dass es ist nicht der richtige Weg ... Kannst du helfen?

Grüße
Pawel

+1

Dies ist kein technisches Problem, sondern eine organisatorische ein. Erhalten Sie Zugriff auf den Metastore, bitten Sie jemanden, es für Sie abzufragen, oder fragen Sie nach einem Speicherauszug, den Sie lokal verwenden können. –

+0

Dies ist streng technische Frage. Wie greife ich auf die Hive-Spaltenliste von einer Bash/Hive-Ebene aus zu? –

+1

Sie sind sich der technischen Möglichkeiten bewusst. Das Abfragen des Metasters ist der richtige Weg. –

Antwort

0

ersetzen show tables where database = $i

Mit use $i; show tables;. Und Sie sollten tee -a

mit, aber ich zustimmen, würde die Metastore die beste Option hier

Erwähnenswert Ihrer UUOC

Looping through the content of a file in Bash?

Verwandte Themen