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

Java 创建外部表配置单元,位置中包含多个文件,java,apache,hadoop,hive,Java,Apache,Hadoop,Hive,在“测试”文件夹下,我每天都在写文件。例如: CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION '/user/hive/warehouse/LOGS/test'; 在我创建的LOGS表中看不到任何数据 但是,我使用 /user/hive/warehouse/LOGS/test/20170

在“测试”文件夹下,我每天都在写文件。例如:

CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING)  
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'  
LOCATION '/user/hive/warehouse/LOGS/test';
在我创建的LOGS表中看不到任何数据

但是,我使用

/user/hive/warehouse/LOGS/test/20170420
/user/hive/warehouse/LOGS/test/20170421
/user/hive/warehouse/LOGS/test/20170422
我能看到那几天的记录


我想查看配置单元表中/test目录下的所有数据,并且/test目录每天都会填充新文件。

选项1

为了支持子目录

LOCATION '/user/hive/warehouse/LOGS/test/20170422';
如果您的配置单元版本低于

set mapred.input.dir.recursive=true;
选项2

创建分区表

set hive.mapred.supports.subdirectories=false;


如果您使用标准约定(例如,
dt=2017-04-20
而不是
20170420

)保存目录,那么管理起来会更容易。默认情况下,hive只读取外部表中指定位置内的文件(而不是目录)。如果要启用添加目录,请设置以下参数:


设置mapred.input.dir.recursive=true

我已经在这里回答了这个问题:@leftjoin可能重复-你给出了一个错误的答案there@DuduMarkovitz I给出了有效的答案。@leftjoin-这就像是在争论重新启动旧窗口的方法是按
ctrl
+
alt
+
delete
+
esc
+
空格
这只是部分原因答案和完整答案已经给出了。谢谢。选项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';