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';