我在 hdfs 中有以下文件夹结构
/input/data/yyyy/mm/dd/
并在其中包含数据文件,例如:
/input/data/2013/05/01/
file_2013_05_01_01.json // file format yyyy_mm_dd_hh
file_2013_05_01_02.json // file format yyyy_mm_dd_hh
....
我为此文件夹定义了配置单元外部表:
CREATE EXTERNAL TABLE input_data (
vr INT, ....
)
PARTITIONED BY (tsp STRING)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
STORED AS TEXTFILE;
为每个文件夹添加一个分区,如下所示:
alter table input_data ADD PARTITION (tsp="2013-05-01") LOCATION '/input/data/2013/05/01/';
以下查询将输入日期为 2013-05-01 的所有文件
select ... from input_data where tps="2013-05-01"
如何仅获取特定时间的文件?不更改 hdfs 结构以将每个小时放在单独的文件夹中?