2013-03-19 23 views
12

Şu anda bir Kova tablosunda yüklü tüm bölümleri nasıl bırakabilirim?Tüm bölümleri bir kovan masasından mı ayırın?

ben kurtarmak bölümleri ifadesiyle tüm bölümleri yükleyebilirsiniz alter table <table> drop partition(a=, b=...);

ile tek bölüm bırakabilirsiniz. Ama tüm bölümleri düşüremiyorum.

EMR, 0.8.1 tarafından desteklenen en son Hive sürümünü kullanıyorum.

cevap

18

Sürüm 0.9.0'dan itibaren, tüm bölümleri bir defada bırakmak için kullanılabilecek drop section deyiminde comparators'u kullanabilirsiniz.

bir örneği, drop_partitions_filter.q testcase alınan: Yalnızca durum

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

dışı Katı modda yapılması gerektiğidir:

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


orijinal tablodan verileri kullanarak tablo oluşturun:

set hive.mapred.mode=nonstrict; 

Umarım yardımcı olur. GL!

+0

'FAILED: Anlamsal çözümlemede hata: 1:23 Hedef tablo bölümlenmiş olduğundan bölüm sütunlarını belirtmeniz gerekiyor. 'T1' –

+1

@MattJoiner Düzeltilmiş belirtisi ile karşılaşılan hata, ancak tam kredi Balaswamy vaddeman için gider. – www

3

Aşağıdaki tablodan t1 yeni bir tablo t1 oluşturun. Yeni masada bölüm varsa

create table t2 as 
    select * from t1; 

damla eski tablo t1

drop table t1; 

şimdi kontrol edin.

show partitions t2; 
8

Hive bölümleri seçerken karşılaştırma operatörlerini (örneğin >, <, =, <>) kullanmasına olanak sağlar. Örneğin, aşağıdaki tabloda tüm bölümleri bırakmanız gerekir.

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

tüm bölümleri siler. Bu özellikle bölümlenmiş tabloyu bırakmak istiyorsanız kullanışlıdır.

+1

yanlış cevap lütfen onu silin –