Ich führe Hive 071 aus und verarbeite vorhandene Daten, die die folgende Verzeichnisstruktur aufweisen:
-Tabellenname
- d= (z.B. 2011-08-01)
- d=2011-08-02
- d=2011-08-03
... usw.
Unter jedem Datum habe ich die Datumsdateien.
Um nun die Daten zu laden, verwende ich
CREATE EXTERNAL TABLE table_name (i int)
PARTITIONED BY (date String)
LOCATION '${hiveconf:basepath}/TableName';**
Ich möchte, dass mein Hive-Skript in der Lage ist, die relevanten Partitionen nach einem Eingabedatum und der Anzahl der Tage zu laden. wenn ich also date='2011-08-03' y days='7'
Das Skript sollte t laden - d=2011-08-03
- d=2011-08-04
- d=2011-08-05
- d=2011-08-06
- d=2011-08-07
- d=2011-08-08
- d=2011-08-09
Ich habe keinen vernünftigen Weg gefunden, dies zu tun, außer es explizit auszuführen:
ALTER TABLE table_name ADD PARTITION (d='2011-08-03');
ALTER TABLE table_name ADD PARTITION (d='2011-08-04');
ALTER TABLE table_name ADD PARTITION (d='2011-08-05');
ALTER TABLE table_name ADD PARTITION (d='2011-08-06');
ALTER TABLE table_name ADD PARTITION (d='2011-08-07');
ALTER TABLE table_name ADD PARTITION (d='2011-08-08');
ALTER TABLE table_name ADD PARTITION (d='2011-08-09');
und dann meine Abfrage ausführen
select count(1) from table_name;
Dies geschieht jedoch nicht automatisch entsprechend den eingegebenen Daten und Tagen.
Gibt es eine Möglichkeit, die externe Tabelle so zu definieren, dass Partitionen nach Datumsbereich oder Datumsarithmetik geladen werden?