2015-05-29 5 views
5

मैं HDInsight का उपयोग कर रहा हूं और जब मैं चल रहे प्रश्नों को समाप्त कर रहा हूं तो अपने क्लस्टर को हटाने की आवश्यकता है। हालांकि, मुझे एक और दिन के लिए जीवित रहने के लिए एकत्रित डेटा की आवश्यकता है। मैं उन प्रश्नों पर काम कर रहा हूं जो तालिका 1 से गणना कॉलम बनाएंगे और उन्हें table2 में डालेंगे। सबसे पहले मैं पंक्तियों की प्रतिलिपि बनाने के लिए एक सरल परीक्षण चाहता था। क्या आप एक चयन कथन से बाहरी तालिका बना सकते हैं?अन्य तालिका से चयन के साथ बाहरी तालिका बनाएं

drop table if exists table2; 

create external table table2 as 
select * 
from table1 
STORED AS TEXTFILE LOCATION 'wasb://{container name}@{storage name}.blob.core.windows.net/'; 

उत्तर

4

हाँ लेकिन आपको इसे दो आदेशों में अलग करना होगा। पहले बाहरी तालिका बनाएं और फिर इसे भरें।

create external table table2(attribute STRING) 
STORED AS TEXTFILE 
LOCATION 'table2'; 

INSERT OVERWRITE TABLE table2 Select * from table1; 

तालिका 2 की स्कीमा चुनिंदा क्वेरी के समान ही होनी चाहिए, इस उदाहरण में इसमें केवल एक स्ट्रिंग विशेषता होती है।

+0

यह RMR की शिकायत: कचरा करने के लिए: "// {कंटेनर नाम} @ {भंडारण नाम} .blob.core.windows.net/wasb", के रूप में यह कचरा शामिल नहीं बदला जा सकता। -skipTrash विकल्प – Roger

+0

का उपयोग करने पर विचार करें, आप कहां सेट करते हैं -skipTrash? – Roger

+0

यह एक [बग] (https://issues.apache.org/jira/browse/HIVE-6469) होता था, लेकिन अब PURGE कमांड का उपयोग करके तय किया जाना चाहिए क्योंकि 0.14 [PURGE] (https: // cwiki .apache.org/संगम/प्रदर्शन/हाइव/भाषा मैनुअल + डीडीएल # भाषा मैनुअल डीडीएल-ड्रॉपटेबल) – FtoTheZ

0

मुझे पता है कि यह बहुत पुराना सवाल है लेकिन यहां समाधान है।

CREATE EXTERNAL TABLE table2 
STORED AS textfile 
LOCATION wasb://.... 
AS SELECT * FROM table1 
संबंधित मुद्दे