我将数据以特定格式组织在目录中(如下所示),并希望将这些数据添加到hive表中。我想添加2012目录的所有数据。 以下所有名称都是目录名称,最里面的dir(第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
到目前为止,查询没有运气:
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/';
解: 这个小参数修复了我的问题。增加可能对其他人有益的问题:
SET mapred.input.dir.recursive=true;
答案 0 :(得分:9)
用适合我案例的解决方案回答我自己的问题。 SET mapred.input.dir.recursive = true;
答案 1 :(得分:1)
ALTER TABLE sampledata
ADD
PARTITION (ystr ='2012', ymstr='2012-01', ymdstr='2012-01-01')
LOCATION '/path/to/data/2012/2012-01/2012-01-01';
答案 2 :(得分:1)
SET hive.mapred.supports.subdirectories=true;
SET mapred.input.dir.recursive=true;
答案 3 :(得分:0)
以下是关于hortonworks的工作
alter table .... set blproperties (
"hive.input.dir.recursive" = "TRUE",
"hive.mapred.supports.subdirectories" = "TRUE",
"hive.supports.subdirectories" = "TRUE",
"mapred.input.dir.recursive" = "TRUE");