如何从子目录中将所有数据提取到配置单元中

Yas*_*rma 8 hive partition

我将数据以特定格式组织在目录中(如下所示),并希望将这些数据添加到hive表中.我想添加2012目录的所有数据.以下所有名称都是目录名称,最内层目录(第3级)具有实际数据文件.有没有办法直接选择数据而无需更改此dir结构.任何指针都表示赞赏.

/2012/
|
|---------2012-01
            |---------2012-01-01
            |---------2012-01-02
            |...
            |...
            |---------2012-01-31
|
|---------2012-02
            |---------2012-02-01
            |---------2012-02-02
            |...
            |...
            |---------2012-02-28
|
|---------2012-03
|...
|...
|---------2012-12
Run Code Online (Sandbox Code Playgroud)

到目前为止,查询没有运气:

CREATE EXTERNAL TABLE sampledata
(datestr string, id string, locations string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
LOCATION '/path/to/data/2012/*/*'; 

CREATE EXTERNAL TABLE sampledata
(datestr string, id string, locations string)
partitioned by (ystr string, ymstr string, ymdstr string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|';

ALTER TABLE sampledata
ADD 
PARTITION (ystr ='2012') 
LOCATION '/path/to/data/2012/';
Run Code Online (Sandbox Code Playgroud)

解决方案: 这个小参数解决了我的问题.增加可能对其他人有益的问题:

SET mapred.input.dir.recursive=true;
Run Code Online (Sandbox Code Playgroud)

Yas*_*rma 10

用适合我案例的解决方案回答我自己的问题.SET mapred.input.dir.recursive = true;

  • 而且(Hive 1.2):set hive.mapred.supports.subdirectories = true; (2认同)
  • 这如何更改您的create external table语句?你还在这个位置使用globs吗? (2认同)