9

特定の形式 (以下に示す) でディレクトリに編成されたデータがあり、これらをハイブ テーブルに追加したいと考えています。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;
4

4 に答える 4

11

私の場合に役立つ解決策で自分の質問に答えます。SET mapred.input.dir.recursive=true;

于 2013-12-25T09:12:13.613 に答える
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';
于 2013-12-24T07:22:09.470 に答える