2013-03-19 6 views
12

वर्तमान में हाइव टेबल में लोड किए गए सभी विभाजन कैसे छोड़ सकते हैं?एक छिद्र तालिका से सभी विभाजन ड्रॉप?

मैं alter table <table> drop partition(a=, b=...);

के साथ एक एकल विभाजन ड्रॉप कर सकते हैं मैं ठीक विभाजन बयान के साथ सभी विभाजन लोड कर सकते हैं। लेकिन मैं सभी विभाजन ड्रॉप नहीं कर सकता।

मैं ईएमआर, 0.8.1 द्वारा समर्थित नवीनतम हाइव संस्करण का उपयोग कर रहा हूं।

उत्तर

18

संस्करण 0.9.0 के रूप में आप ड्रॉप विभाजन कथन में comparators का उपयोग कर सकते हैं जिसका उपयोग सभी विभाजनों को एक बार में छोड़ने के लिए किया जा सकता है।

एक उदाहरण है, drop_partitions_filter.q testcase से लिया:

CREATE TABLE t2 AS 
SELECT column_name_1, ..., column_name_N FROM t1; 

केवल मामला है कि यह गैर कठोर मोड में किया जाना चाहिए है:

create table ptestfilter (a string, b int) partitioned by (c string, d string); 
alter table ptestfilter add partition (c='US', d=1); 
alter table ptestfilter add partition (c='US', d=2); 
alter table ptestFilter add partition (c='Uganda', d=2); 
alter table ptestfilter add partition (c='Germany', d=2); 
alter table ptestfilter add partition (c='Canada', d=3); 
alter table ptestfilter add partition (c='Russia', d=3); 
alter table ptestfilter add partition (c='Greece', d=2); 
alter table ptestfilter add partition (c='India', d=3); 
alter table ptestfilter add partition (c='France', d=4); 

show partitions ptestfilter; 
alter table ptestfilter drop partition (c>'0', d>'0'); 
show partitions ptestfilter; 
0


मूल तालिका से डेटा का उपयोग कर तालिका बनाएँ:

set hive.mapred.mode=nonstrict; 

मुझे आशा है कि इससे मदद मिलती है। जीएल!

+0

'विफल: अर्थपूर्ण विश्लेषण में त्रुटि: 1:23 विभाजन कॉलम निर्दिष्ट करने की आवश्यकता है क्योंकि गंतव्य तालिका विभाजित है। टोकन 't1'' –

+1

@ मैटजॉइनर के पास त्रुटि आई, लेकिन पूर्ण क्रेडिट बालास्वामी वाडेमन को जाता है। – www

3

मौजूदा तालिका टी 1 से नीचे एक नई तालिका टी 2 बनाएं।

create table t2 as 
    select * from t1; 

बूंद वर्ष तालिका t1

drop table t1; 

अब देखें कि क्या आप नए मेज पर विभाजन की है।

show partitions t2; 
8

हाइव आप जब विभाजन का चयन तुलना ऑपरेटरों (जैसे >, <, =, <>) का उपयोग करने की अनुमति देता है। उदाहरण के लिए, तालिका में सभी विभाजन को छोड़ देना चाहिए।

ALTER TABLE table_name DROP PARTITION (partition_name > '0'); 
-2
truncate table table_name; 

सभी विभाजनों को हटा देंगे। यह उपयोगी है खासकर यदि आप विभाजित तालिका को छोड़ना चाहते हैं।

+1

गलत उत्तर कृपया इसे हटाएं –

संबंधित मुद्दे