Wie kann ich die create-Anweisung für eine vorhandene Hive-Tabelle abrufen / generieren?


90

Angenommen, Sie haben bereits "Tabelle" in Hive. Gibt es wie bei anderen Datenbanken eine schnelle Möglichkeit, die Anweisung "CREATE" für diese Tabelle abzurufen?

Antworten:


199

Ab Hive 0.10 implementiert dieser Patch-967 Folgendes: SHOW CREATE TABLE"Zeigt die CREATE TABLEAnweisung an, mit der eine bestimmte Tabelle erstellt wird, oder die CREATE VIEWAnweisung, mit der eine bestimmte Ansicht erstellt wird."

Verwendung:

SHOW CREATE TABLE myTable;

25

Schritte zum Generieren Erstellen Sie Tabellen-DDLs für alle Tabellen in der Hive-Datenbank und exportieren Sie sie in eine Textdatei, um sie später auszuführen:

Schritt 1) ​​Erstellen Sie eine .sh-Datei mit dem folgenden Inhalt, z. B. 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"

Schritt 2) Führen Sie das obige Shell-Skript aus, indem Sie 'db name' als Parameter übergeben

>bash hive_table_dd.sh <<databasename>>

Ausgabe :

Alle create table-Anweisungen Ihrer Datenbank werden in die HiveTableDDL.txt geschrieben


1
wie wir sicherstellen können, dass die Buckets und das Speicherformat in eine neue Tabelle repliziert werden.
— YouAreAwesome

Sie sollten auch nach jeder Anweisung ein Semikolon anhängen, damit das Skript ausgeführt werden kann, indem Sie hive -f HiveTableDDL.txt sagen.
— Muton

Dieses Skript schlägt für mich mit dem folgenden Fehler fehl: Fehler beim Kompilieren der Anweisung: FAILED: ParseException-Zeile 1:18 kann Eingaben in der Nähe von '|' nicht erkennen. '|' im Tabellennamen führe ich dieses Skript mit beeline aus, da HDP 3.0 den Hive-Shell-Zugriff nicht unterstützt
— Abhinav

@cfeduke Dieses Skript gibt den Speicherort der Hive-Tabellen an. Wie überspringe ich einen Teil des Standorts, um diese ddls an einem anderen Ort auszuführen? Änderungen an mehr als 1000 Tabellen sind nicht möglich
— user1

2

Beschreiben Formatiert / Erweitert zeigt die Datendefinition der Tabelle in Hive an

hive> describe Formatted dbname.tablename;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.