2017-06-02 7 views
0
CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
LOCATION '/user/hive/warehouse/LOGS/test'; 

'test'フォルダの下にファイルを毎日作成しています。たとえば:外部テーブルハイブを作成します。場所に複数のファイルが含まれています

/user/hive/warehouse/LOGS/test/20170420 
/user/hive/warehouse/LOGS/test/20170421 
/user/hive/warehouse/LOGS/test/20170422 

私が作成したLOGSテーブル内のデータは表示されません。

しかし、私は

LOCATION '/user/hive/warehouse/LOGS/test/20170422'; 

を使用してテーブルを作成し、私はその日の記録を見ることができます。

私のHIVEテーブルの/ testディレクトリにあるすべてのデータを見たいと思っています。また、/ testディレクトリには新しいファイルが毎日入っています。

+0

すでにこの質問に回答しています。https://stackoverflow.com/a/43804942/2700344 – leftjoin

+0

[Hive create table with Nested Sub-Directory](https://stackoverflow.com/questions)の可能な複製/ 24438148/hive-create-table-with-nestedサブディレクトリからの入力) – leftjoin

+0

@leftjoin - あなたは間違った答えを与えています –

答えて

1

オプションのサブディレクトリ

set mapred.input.dir.recursive=true; 

と、あなたハイブバージョンがある場合よりも低い2.0.0

set hive.mapred.supports.subdirectories=false; 

オプション2

をサポートするために、1

例えば、あなたが標準的な慣習を使用してディレクトリを続ける場合には、管理することが容易になるだろう

CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING) 
partitioned by (dt date) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
LOCATION '/user/hive/warehouse/LOGS/test'; 

alter table LOGS add if not exists partition (dt=date '2017-04-20') LOCATION '/user/hive/warehouse/LOGS/test/20170420'; 
alter table LOGS add if not exists partition (dt=date '2017-04-21') LOCATION '/user/hive/warehouse/LOGS/test/20170421'; 
alter table LOGS add if not exists partition (dt=date '2017-04-22') LOCATION '/user/hive/warehouse/LOGS/test/20170422'; 

パーティション表を作成します。 dt=2017-04-20の代わりに20170420

+0

ありがとう。オプション1が作業を行います。 しかし、ハイブコマンドラインで*を選択すると、データを見ることができます。しかし、もし私がHUEを使用して同じテーブルをチェックすると、レコードが表示されないのですか? HUEレベルの設定を変更する必要はありますか? – voldy

0

デフォルトでは、ハイブは外部テーブル内の指定された場所内のファイル(ディレクトリではない)のみを読み取ります。ディレクトリの追加を有効にする場合は、次のパラメータを設定します。

set mapred.input.dir.recursive = true;

+0

これは部分的な答えであり、完全な答えはすでに与えられています。 –

関連する問題