繁体   English   中英

创建外部表配置单元,位置内部包含多个文件

[英]Create external table hive, location contains multiple files inside

CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING)  
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'  
LOCATION '/user/hive/warehouse/LOGS/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目录每天都填充有新文件。

选项1

为了支持子目录

set mapred.input.dir.recursive=true;

如果您的Hive版本低于2.0.0,那么

set hive.mapred.supports.subdirectories=false;

选项2

创建一个分区表

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

默认情况下,hive仅读取外部表中指定位置内的文件(而非目录)。 如果要启用添加目录,请设置以下参数:

设置mapred.input.dir.recursive = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM