मौजूदा हाइव तालिका के लिए बनाएं स्टेटमेंट कैसे प्राप्त करें / उत्पन्न करें?


91

यह मानते हुए कि आपके पास "तालिका" पहले से ही हाइव में है, क्या उस तालिका के लिए "क्रिएट" कथन प्राप्त करने में सक्षम होने के लिए अन्य डेटाबेस की तरह एक त्वरित तरीका है?

जवाबों:



27

उत्पन्न करने के लिए कदम हाइव डेटाबेस में सभी तालिकाओं के लिए तालिका ddls बनाएँ और बाद में चलाने के लिए पाठ फ़ाइल में निर्यात करें:

चरण 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 नाम ’परमानेंट के रूप में चलाएं

>bash hive_table_dd.sh <<databasename>>

आउटपुट:

आपके DB के सभी तालिका तालिका विवरण HiveTableDDL.txt में लिखे जाएंगे


1
हम यह कैसे सुनिश्चित कर सकते हैं कि बाल्टी और भंडारण प्रारूप नई तालिका में दोहराया जाएगा।
YouAreAwesome

आपको प्रत्येक कथन के बाद एक अर्धविराम भी संलग्न करना चाहिए, ताकि स्क्रिप्ट को hive -f HiveTableDDL.txt कहकर निष्पादित किया जा सके।
मटन

नीचे दी गई त्रुटि के साथ यह स्क्रिप्ट मेरे लिए विफल हो रही है: कथन संकलित करते समय त्रुटि: विफल: ParseException line 1:18 पास इनपुट को नहीं पहचान सकता है। ' '|' टेबल के नाम पर मैं इस स्क्रिप्ट को बीलाइन के साथ निष्पादित कर रहा हूं क्योंकि HDP 3.0 हाइव-शेल एक्सेस का समर्थन नहीं करता है
अभिनव

@cfeduke यह स्क्रिप्ट हाइव टेबल का स्थान देती है। किसी अन्य हाइव स्थान पर इन ddls को चलाने के लिए स्थान भाग इनवर्टर को कैसे छोड़ें? बदलने 1000 से अधिक टेबल पर संभव नहीं है
user1

2

वर्णन करें कि प्रारूपित / विस्तारित हाइव में तालिका की डेटा परिभाषा दिखाएगा

hive> describe Formatted dbname.tablename;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.