【发布时间】:2014-01-12 10:34:29
【问题描述】:
我将数据以特定格式(如下所示)组织在目录中,并希望将这些数据添加到 hive 表中。我想添加 2012 目录的所有数据。 以下所有名称都是目录名称,最里面的目录(第 3 级)具有实际的数据文件。 有什么方法可以直接提取数据而无需更改此目录结构。 任何指针表示赞赏。
/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;
【问题讨论】:
-
上述 CREATE TABLE 语法中的哪一种对您有帮助。我面临同样的问题。我的数据分布在多个目录中。
-
在最顶层的数据目录上使用第一个创建查询
-
LOCATION 中的通配符对您有用吗?我不能让它工作。它会创建架构,但在我查询表时没有为我检索到任何结果。