จะรับ / สร้างคำสั่งสร้างสำหรับตารางรังที่มีอยู่ได้อย่างไร


95

สมมติว่าคุณมี "ตาราง" อยู่แล้วใน Hive มีวิธีที่รวดเร็วเหมือนกับฐานข้อมูลอื่น ๆ ในการรับคำสั่ง "สร้าง" สำหรับตารางนั้นหรือไม่?

คำตอบ:


210

ในฐานะของ Hive 0.10นี้แพทช์ 967การดำเนินการSHOW CREATE TABLEที่ "แสดงให้เห็นว่าCREATE TABLEคำสั่งที่สร้างตารางที่กำหนดหรือCREATE VIEWคำสั่งที่สร้างมุมมองที่ได้รับ."

การใช้งาน:

SHOW CREATE TABLE myTable;

28

ขั้นตอนในการสร้างสร้างตาราง DDL สำหรับตารางทั้งหมดในฐานข้อมูล Hive และส่งออกเป็นไฟล์ข้อความเพื่อเรียกใช้ในภายหลัง:

ขั้นตอนที่ 1)
สร้าง.shไฟล์ที่มีเนื้อหาด้านล่างพูด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"

ขั้นตอนที่ 2)

รันเชลล์สคริปต์ด้านบนโดยส่ง 'db name' เป็นพารามิเตอร์

>bash hive_table_dd.sh <<databasename>>

เอาต์พุต:

คำสั่ง create table ทั้งหมดของ DB ของคุณจะถูกเขียนลงในไฟล์ HiveTableDDL.txt


1
เราจะแน่ใจได้อย่างไรว่าที่เก็บข้อมูลและรูปแบบการจัดเก็บจะถูกจำลองลงในตารางใหม่
YouAreAwesome

คุณควรต่อท้ายเครื่องหมายอัฒภาคหลังแต่ละคำสั่งเพื่อให้สามารถเรียกใช้สคริปต์ได้โดยพูด hive -f HiveTableDDL.txt
Muton

สคริปต์นี้ล้มเหลวสำหรับฉันด้วยข้อผิดพลาดด้านล่าง: ข้อผิดพลาดขณะรวบรวมคำสั่ง: FAILED: ParseException บรรทัด 1:18 ไม่รู้จักอินพุตที่อยู่ใกล้ '|' '|' ในชื่อตารางฉันเรียกใช้สคริปต์นี้ด้วยเส้นตรงเนื่องจาก HDP 3.0 ไม่รองรับการเข้าถึงแบบ hive-shell
Abhinav

@cfeduke สคริปต์นี้ให้ตำแหน่งของตารางรัง จะข้ามส่วนตำแหน่งตามลำดับเพื่อเรียกใช้ ddls เหล่านี้ในตำแหน่งอื่นได้อย่างไร ไม่สามารถแก้ไขตารางมากกว่า 1,000 ตารางได้
user1

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.