Mevcut bir kovan tablosu için create deyimi nasıl alınır / oluşturulur?


91

Hive'da zaten "tablo" nun olduğunu varsayarsak, bu tablo için "CREATE" ifadesini almanın diğer veritabanları gibi hızlı bir yolu var mı?

Yanıtlar:


203

Hive 0.10 itibariyle bu yama-967 uygular SHOW CREATE TABLE"gösterileri CREATE TABLEverilen bir tablo veya oluşturur deyimi CREATE VIEW, belirli bir görünüm oluşturur deyimi."

Kullanım:

SHOW CREATE TABLE myTable;

27

Hive veritabanındaki tüm tablolar için tablo ddl'leri oluşturma ve daha sonra çalıştırmak üzere metin dosyasına aktarma adımları:

adım 1) aşağıdaki içeriğe sahip bir .sh dosyası oluşturun, örneğin 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"

adım 2) Parametre olarak 'db adını' geçerek yukarıdaki kabuk komut dosyasını çalıştırın

>bash hive_table_dd.sh <<databasename>>

çıktı :

DB'nizin tüm tablo oluşturma ifadeleri HiveTableDDL.txt dosyasına yazılacaktır.


1
Paketlerin ve depolama biçiminin yeni tabloya kopyalanacağından nasıl emin olabiliriz.
YouAreAwesome

Ayrıca, betiğin hive -f HiveTableDDL.txt diyerek çalıştırılabilmesi için her ifadeden sonra noktalı virgül eklemelisiniz.
Muton

Bu komut dosyası benim için aşağıdaki hatayla başarısız oluyor: İfade derlenirken hata oluştu: BAŞARISIZ: ParseException satır 1:18 '|' yakınındaki girişi tanıyamıyor '|' tablo adında, HDP 3.0 kovan kabuğu erişimini desteklemediği için bu betiği beeline ile çalıştırıyorum
Abhinav

@cfeduke bu komut dosyası, kovan tablolarının konumunu verir. Bu DDL'leri başka bir kovan konumunda çalıştırmak için konum bölümü nasıl atlanır? 1000'den fazla tablo üzerinde değişiklik yapmak mümkün değildir
kullanıcı1

2

Biçimlendirilmiş / Genişletilmiş Açıklama, tablonun veri tanımını kovanda gösterecektir

hive> describe Formatted dbname.tablename;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.