2016-04-20 17 views
0

Ich habe eine externe Tabelle wieHive Partitionen nach Datum?

CREATE EXTERNAL TABLE TAB(ID INT, NAME STRING) PARTITIONED BY(YEAR INT, MONTH STRING , DATES INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; 

ich Daten wie

/user/input/2015/jan/1; 
/user/input/2015/jan/30 

wie die Jahre 2000 bis 2016 jedes Jahr mit 12 Monaten und 30 Tagen;

Wenn ich das mag, bekomme ich nur einen Tag Daten;

select * from TAB where (year = '2015', month = 'jan',dates = '5'); 

wenn ich

select * from TAB where (year = '2015', month = 'jan',dates = '6'); 

betreibe ich bin keine Daten zu bekommen. Bitte helfen Sie mir dies, wie Tisch

Antwort

0
create table tab(id int,name string,dt string) partitioned by (year string,month string); 

create table samp(id int,name string,dt string) row format delimited fields terminated by '\t'; 

load data inpath '\dir' into table samp; 
insert overwrite table tab partition (y,m) select id,name dt,YEAR(dt),MONTH(dt) from samp; 
+0

In diesem Fall möchte ich keine Daten auf lokale laden. Gibt es eine Alternative ?? –

0

Sie erhalten 1 Tag für das oben beschriebene Szenario für ALTER TABLE TAB ADD PARTITION(year = '2015', month = 'jan',dates = '5') LOCATION '/user/input/2015/jan/1'; zu ändern, weil Sie 1 Datei

in Ihrem Standort Wert angeben

5 Tage lang die Partition zu erstellen, wie unten

ALTER TABLE TAB 
ADD PARTITION(dates <= '5') 
LOCATION '/user/input/2015/jan/'; 
+0

Sorry, es ist Fehler werfen .. –

+0

@SomaSekharKuruva was ist der Fehler? –

+0

nicht übereinstimmende Eingabe '<=' erwartet) nahe 'Daten' in der Anweisung 'add partition'; Zeile 2 Pos. 20 –

0

alter Tisch mit allen nur Optionsdaten, ich folgende bin die gleichen wie „TABLE TAB PARTITION ADD ALTEN (Jahr = '2015', Monat = 'Januar', Daten = '5') LOCATION‚/ user/input/2015/jan/1 '; "

Verwandte Themen