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
dt=2017-04-20
20170420